Behind the Scenes Tour of Endurica Software Development and QA Practices

Ever wonder what it takes to consistently deliver quality and reliability in our software releases?  Here’s a brief overview of the systems and disciplines we use to ensure that our users receive timely, trouble-free updates of Endurica software.


Throughout the life of our software, changes are made to our source code for a variety of reasons.  Most commonly, we are adding new features and capabilities to our software.  We also make updates to the code to improve performance and to squash the inevitable bugs that occasionally occur.

With each change committed to the code repository, the software needs to be built, tested, and released.  Endurica’s workflow automates these steps so that any change to the source repository triggers a clean build of the software.  A successful build is automatically followed by a testing phase where our suite of benchmarks is executed and compared to known results.  Finally, the build is automatically packaged and stored so that it is ready to be delivered.  At each step along the way, a build error or failed test will cancel the workflow and send an alert warning that the release has been rejected, so that the issue can be addressed, and the workflow restarted.

Figure 1: Endurica’s build and testing process ensures that high quality standards are met for every new release. Black arrow: normal flow, Red arrow: on error or failed test.


The automated testing phase that every release goes through helps ensure the reliability of our software.  For example, every Endurica CL release must pass all 70 benchmarks.  Each benchmark is a separate Endurica CL analysis made up of different materials, histories, and output requests.  Results from a new build are compared to known results from the previous successful build.  If results do not agree, or if there are any errors, the benchmark does not pass and the build is rejected.

The testing phase prevents “would-be” bugs from making it into a release and makes sure that any issues get resolved.


The automated nature of our development workflow naturally helps with repeatability in our releases.  Each build flows through the same pipeline, creating consistent releases every time.  There is less worry, for example, that a component will be forgotten to be included.  It also allows us to recreate previous versions if comparisons need to be made.


Our version control system enables us to easily pinpoint where and when prior changes were introduced into the software.  Each release is tied to a commit in the repository. This allows any future issues to be easily traced back and isolated to a small set of changes in the source for quick resolution.


Automating the build and release pipelines greatly increases our responsiveness.  If an issue is discovered in a release, the problem can be resolved, and a fully corrected and tested release can be made available the same day.  We can also quickly respond to user feedback and suggestions by making small and frequent updates.

The systems and disciplines we use in our development process make us very efficient, and they protect against many errors. This means we can spend more of our time on what matters: delivering and improving software that meets high standards and helps you to get durability right.


EIE – Effect of Map Discretization on Interpolation Accuracy


The accuracy of the interpolated results performed by EIE is dependent on the discretization of the map. Specifically, the results will become more accurate as the map’s point density increases. This study uses a simple 2D model to quantify the accuracy of results interpolated from maps with different densities.


A 1 mm x 1 mm rubber 2D plane strain model with two channels is used. The square’s bottom edge is fixed and the top edge is displaced in the x and y directions as shown below. The x displacement corresponds to channel 1 and the y displacement corresponds to channel 2. The working space of the model is defined by the x displacement ranging from 0 mm to 0.8 mm and the y displacement ranging from -0.08 mm to 0.8 mm.

Plane strain model with two channels

The model is meshed with 100 8-node, quadrilateral, plane strain, hybrid, reduced integration elements (shown below).

100 element mesh


We define as the benchmark reference solution a history that covers the model’s entire working space with a high density of points. An evenly spaced grid of 128×128 points for a total of 16384 points is used as the history (shown below). It is important that this history is more refined than the maps that we will create to ensure that we are testing all regions of our maps.

128×128 history points

These points are used to drive the finite element model and the results are recorded. For this study, we record the three non-zero strain components and the hydrostatic pressure (NE11, NE22, NE12, and HP) for each element at each time point. In summary, there are 4 result components, 100 elements, and 16384 time increments. This set of results is the reference solution since it is solved directly by the finite element model. We will compare this solution to our interpolated results to measure our interpolation accuracy.


Six maps with different levels of refinement are used to compute interpolated results for our history points. All of the maps structure their points as an evenly spaced grid. The first map starts with two points along each edge. With each additional map, the number of points along each edge is doubled so that the sixth and final map has 64 edge points. The map points for the six maps are shown below.

Six maps with increasing levels of refinement

The map points for these six maps are used to drive the finite element model’s two channels. The strain and hydrostatic pressure results from the FEA solutions are recorded at each map point in a similar way to how the results were recorded for the FEA solution that was driven by the history points. Next, EIE is used six times to interpolate the map point results at each resolution onto the high resolution reference history points.

We now have seven sets of history results: the true set of results and six interpolated sets of results.


To compare our results, we look at the absolute difference between the sets of results. The absolute error is used, opposed to a relative error, since some regions of the model’s working space will give near zero strain and hydrostatic pressure. Division by these near zero values would cause the relative error to spike in those regions.

Since we have 100 elements and 4 components per element, there are a lot of results that could be compared. To focus our investigation, we look at the element and component that gave the maximum error. The figure below shows contour plots for each of the six maps for this worst-case element and component. The component that gave the maximum error was NE12. The title of each of the contour plot also shows the maximum error found for each of the plots.

Error contours for the worst-case element and component. Titles report the maximum log10 error.

You can see that the error decreases as the map density increases. Also, you can identify the grid pattern in the contour plots since the error gets smaller near the map points.

Plotting the maximum error for each of the maps against the number of map points on a log scale is shown below. The slope of this line is approximately equal to 1 which is expected since a linear local interpolation was used to compute the results.

Maximum error vs the number of points for each of the six maps

Specifying Strain Crystallization Effects for Fatigue Analysis

Endurica CL and fe-safe/Rubber provide several material models for defining cyclic crack growth under nonrelaxing conditions.  Nonrelaxing cycles occur when the ratio R is greater than zero.  R is defined as

where T is the energy release rate (note that T will always be greater than or equal to zero).

The crack growth rate under nonrelaxing conditions is, in general, a function of both Tmax and R. For purposes of calculation, it is convenient to define an “equivalent” energy release rate Teq that gives the same steady state rate of crack growth as the operating condition on the nonrelaxing crack growth curve, but which is instead on the fully relaxing crack growth curve.  In other words,

Using this scheme, you can set up models for both amorphous and strain-crystallizing rubbers, depending on your definition of Teq.  Amorphous rubbers follow the well-known Paris model, and strain-crystallizing rubbers follow the Mars-Fatemi model (or you can define a lookup table).

Paris Model (Amorphous):

The Paris model is the simplest to derive, as it does not involve any material parameters.  It defines the equivalent energy release rate as

This definition is only suitable for rubbers that do not strain-crystallize.

For strain-crystallizing rubbers, one of the other two models should be used.

Mars-Fatemi Model (Strain-crystallizing):

The Mars-Fatemi model accounts for strain crystallization by treating the power-law slope, F, of the Thomas fatigue crack growth rate law   as a function of R, where


The exponential version is more compact, but the polynomial version is more flexible.

By substituting F(R) into the fatigue crack growth rate equations for relaxing and nonrelaxing cases, and doing a bit of algebra, the following relationship is obtained


Lookup Table (Strain-crystallizing):

The most flexible and accurate way to define strain crystallization is via a lookup table.  The lookup table takes R as an input and returns x(R) as an output.  This function can be defined as the fraction x(R) by which the nonrelaxing crack growth curve is shifted between the fully relaxing crack growth curve (x=0), and the vertical asymptote at Tc (x=1), at a given R.

This can be rearranged into the desired Teq (Tmax,R) form, as follows


Visualizing the differences between the models helps gain a better understanding of how strain crystallization can affect fatigue performance.  Since all of these models can be represented in the same form of Teq(Tmax,R), we show 2-D contour plots of Teq with R on the x-axis and ∆T on the y-axis.  ∆T is used instead of Tmax to make it easier to compare back to the simple Paris model.

From the figures above, we see that for the Paris model, the equivalent energy release rate depends only on ∆T.  When using this model, changes in R will have no effect on fatigue performance (when ∆T is also held constant).

For strain-crystallizing rubbers, changes in R should influence fatigue performance.  This is seen in the figures for the Mars-Fatemi and lookup table models.

The Mars-Fatemi example uses the following parameters:

The lookup table example uses Tc=10.0 kJ/m2 and Lindley’s data for unfilled natural rubber (P. B. Lindley, Int. J. Fracture 9, 449 (1973)).

For these models, there is a significant decline in Teq as R increases.  This effect is most pronounced when Tmax is much smaller than the critical energy release rate Tc.  Also, there is a point where the effect is reversed (around R=0.8 in these examples) and the high R-ratio starts to have a negative effect on fatigue performance.


A material’s strain crystallization properties’ impact on fatigue performance under non-relaxing conditions should not be ignored.  Whether you are seeking to take advantage of strain-crystallization effects or simply comparing the results of different materials/geometries/loadings, strain-crystallization should be accurately represented in your simulations.

Follow these tips to take advantage of strain crystallization and help ensure your fatigue performance is the best it can be.

  • Take advantage of Endurica’s material characterization service (the FPM-NR Nonrelaxing Module generates the strain crystallization curve) or use your own in-house testing to create an accurate strain crystallization model of your material (the nonrelaxing procedure is available for the Coesfeld Tear and Fatigue Analyser).
  • Use output requests like DAMAGE_SPHERE, CEDMINMAX and CEDRAINFLOW to observe R-ratios for your duty cycles.



  1. B. Lindley, Int. J. Fracture 9, 449 (1973)

Mars, W. V. “Fatigue life prediction for elastomeric structures.” Rubber chemistry and technology 80, no. 3 (2007): 481-503.

Mars, W. V. “Computed dependence of rubber’s fatigue behavior on strain crystallization.” Rubber Chemistry and Technology 82, no. 1 (2009): 51-61.

Barbash, Kevin P., and William V. Mars. Critical Plane Analysis of Rubber Bushing Durability under Road Loads. No. 2016-01-0393. SAE Technical Paper, 2016.



Trial License RequestTrial License RequestTrial License RequestTrial License RequestTrial License Request