.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "auto_calibration/least_squares_and_gaussian_calibration/plot_calibration_chaboche.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note Click :ref:`here ` to download the full example code .. rst-class:: sphx-glr-example-title .. _sphx_glr_auto_calibration_least_squares_and_gaussian_calibration_plot_calibration_chaboche.py: Calibration of the Chaboche mechanical model ============================================ .. GENERATED FROM PYTHON SOURCE LINES 6-7 In this example we present calibration methods on the Chaboche model. A detailed explanation of this mechanical law is presented :ref:`here `. .. GENERATED FROM PYTHON SOURCE LINES 10-18 .. code-block:: default import numpy as np import openturns as ot import openturns.viewer as viewer from matplotlib import pylab as plt from openturns.usecases import chaboche_model as chaboche_model ot.Log.Show(ot.Log.NONE) .. GENERATED FROM PYTHON SOURCE LINES 19-20 Load the Chaboche data structure .. GENERATED FROM PYTHON SOURCE LINES 20-22 .. code-block:: default cm = chaboche_model.ChabocheModel() .. GENERATED FROM PYTHON SOURCE LINES 23-24 We get the Chaboche model and the joint input distribution : .. GENERATED FROM PYTHON SOURCE LINES 24-27 .. code-block:: default g = cm.model inputDistribution = cm.inputDistribution .. GENERATED FROM PYTHON SOURCE LINES 28-29 Create the Monte-Carlo sample. .. GENERATED FROM PYTHON SOURCE LINES 31-36 .. code-block:: default sampleSize = 100 inputSample = inputDistribution.getSample(sampleSize) outputStress = g(inputSample) outputStress[0:5] .. raw:: html
y0
08.837278e+08
17.771642e+08
28.666929e+08
38.712515e+08
47.604437e+08


.. GENERATED FROM PYTHON SOURCE LINES 37-38 Plot the histogram of the output. .. GENERATED FROM PYTHON SOURCE LINES 40-46 .. code-block:: default histoGraph = ot.HistogramFactory().build(outputStress / 1.0e6).drawPDF() histoGraph.setTitle("Histogram of the sample stress") histoGraph.setXTitle("Stress (MPa)") histoGraph.setLegends([""]) view = viewer.View(histoGraph) .. image:: /auto_calibration/least_squares_and_gaussian_calibration/images/sphx_glr_plot_calibration_chaboche_001.png :alt: Histogram of the sample stress :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 47-48 Generate observation noise. .. GENERATED FROM PYTHON SOURCE LINES 50-55 .. code-block:: default stressObservationNoiseSigma = 10.0e6 # (Pa) noiseSigma = ot.Normal(0.0, stressObservationNoiseSigma) sampleNoiseH = noiseSigma.getSample(sampleSize) observedStress = outputStress + sampleNoiseH .. GENERATED FROM PYTHON SOURCE LINES 56-58 .. code-block:: default observedStrain = inputSample[:, 0] .. GENERATED FROM PYTHON SOURCE LINES 59-64 .. code-block:: default graph = ot.Graph("Observations", "Strain", "Stress (MPa)", True) cloud = ot.Cloud(observedStrain, observedStress / 1.0e6) graph.add(cloud) view = viewer.View(graph) .. image:: /auto_calibration/least_squares_and_gaussian_calibration/images/sphx_glr_plot_calibration_chaboche_002.png :alt: Observations :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 65-67 Set the calibration parameters ------------------------------ .. GENERATED FROM PYTHON SOURCE LINES 69-70 Define the value of the reference values of the :math:`\theta` parameter. In the bayesian framework, this is called the mean of the *prior* gaussian distribution. In the data assimilation framework, this is called the *background*. .. GENERATED FROM PYTHON SOURCE LINES 72-78 .. code-block:: default R = 700e6 # Exact : 750e6 C = 2500e6 # Exact : 2750e6 Gamma = 8.0 # Exact : 10 thetaPrior = [R, C, Gamma] .. GENERATED FROM PYTHON SOURCE LINES 79-80 The following statement create the calibrated function from the model. The calibrated parameters `R`, `C`, `Gamma` are at indices 1, 2, 3 in the inputs arguments of the model. .. GENERATED FROM PYTHON SOURCE LINES 82-85 .. code-block:: default calibratedIndices = [1, 2, 3] mycf = ot.ParametricFunction(g, calibratedIndices, thetaPrior) .. GENERATED FROM PYTHON SOURCE LINES 86-88 Calibration with linear least squares ------------------------------------- .. GENERATED FROM PYTHON SOURCE LINES 90-91 The `LinearLeastSquaresCalibration` class performs the linear least squares calibration by linearizing the model in the neighbourhood of the reference point. .. GENERATED FROM PYTHON SOURCE LINES 93-97 .. code-block:: default algo = ot.LinearLeastSquaresCalibration( mycf, observedStrain, observedStress, thetaPrior, "SVD" ) .. GENERATED FROM PYTHON SOURCE LINES 98-99 The `run` method computes the solution of the problem. .. GENERATED FROM PYTHON SOURCE LINES 101-103 .. code-block:: default algo.run() .. GENERATED FROM PYTHON SOURCE LINES 104-106 .. code-block:: default calibrationResult = algo.getResult() .. GENERATED FROM PYTHON SOURCE LINES 107-109 Analysis of the results ----------------------- .. GENERATED FROM PYTHON SOURCE LINES 111-112 The `getParameterMAP` method returns the maximum of the posterior distribution of :math:`\theta`. .. GENERATED FROM PYTHON SOURCE LINES 114-117 .. code-block:: default thetaMAP = calibrationResult.getParameterMAP() thetaMAP .. raw:: html

[7.47021e+08,3.00805e+09,13.4977]



.. GENERATED FROM PYTHON SOURCE LINES 118-119 We can compute a 95% confidence interval of the parameter :math:`\theta^\star`. .. GENERATED FROM PYTHON SOURCE LINES 121-124 .. code-block:: default thetaPosterior = calibrationResult.getParameterPosterior() thetaPosterior.computeBilateralConfidenceIntervalWithMarginalProbability(0.95)[0] .. raw:: html

[7.38479e+08, 7.55563e+08]
[2.41351e+09, 3.60259e+09]
[-581.106, 608.101]



.. GENERATED FROM PYTHON SOURCE LINES 125-129 We can see that the `Gamma` parameter has a large confidence interval : even the sign of the parameter is unknown. The parameter which is calibrated with the smallest confidence interval is `R`, which confidence interval is [708.3,780.0] (MPa). This is why this parameter seems the most important in this case. .. GENERATED FROM PYTHON SOURCE LINES 131-135 .. code-block:: default graph = calibrationResult.drawObservationsVsInputs() graph.setLegendPosition("topleft") view = viewer.View(graph) .. image:: /auto_calibration/least_squares_and_gaussian_calibration/images/sphx_glr_plot_calibration_chaboche_003.png :alt: plot calibration chaboche :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 136-137 We see that there is a good fit after calibration, since the predictions after calibration (i.e. the green crosses) are close to the observations (i.e. the blue crosses). .. GENERATED FROM PYTHON SOURCE LINES 139-142 .. code-block:: default graph = calibrationResult.drawObservationsVsPredictions() view = viewer.View(graph) .. image:: /auto_calibration/least_squares_and_gaussian_calibration/images/sphx_glr_plot_calibration_chaboche_004.png :alt: plot calibration chaboche :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 143-144 We see that there is a much better fit after calibration, since the predictions are close to the diagonal of the graphics. .. GENERATED FROM PYTHON SOURCE LINES 146-149 .. code-block:: default observationError = calibrationResult.getObservationsError() observationError .. raw:: html

Normal(mu = 0, sigma = 1.20072e+07)



.. GENERATED FROM PYTHON SOURCE LINES 150-154 .. code-block:: default graph = calibrationResult.drawResiduals() graph.setLegendPosition("topleft") view = viewer.View(graph) .. image:: /auto_calibration/least_squares_and_gaussian_calibration/images/sphx_glr_plot_calibration_chaboche_005.png :alt: , Residual analysis :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 155-158 The analysis of the residuals shows that the distribution is centered on zero and symmetric. This indicates that the calibration performed well. Moreover, the distribution of the residuals is close to being gaussian. .. GENERATED FROM PYTHON SOURCE LINES 160-163 .. code-block:: default graph = calibrationResult.drawParameterDistributions() view = viewer.View(graph) .. image:: /auto_calibration/least_squares_and_gaussian_calibration/images/sphx_glr_plot_calibration_chaboche_006.png :alt: plot calibration chaboche :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 164-166 Calibration with nonlinear least squares ---------------------------------------- .. GENERATED FROM PYTHON SOURCE LINES 168-169 The `NonLinearLeastSquaresCalibration` class performs the non linear least squares calibration by minimizing the squared euclidian norm between the predictions and the observations. .. GENERATED FROM PYTHON SOURCE LINES 171-176 .. code-block:: default algo = ot.NonLinearLeastSquaresCalibration( mycf, observedStrain, observedStress, thetaPrior ) .. GENERATED FROM PYTHON SOURCE LINES 177-178 The `run` method computes the solution of the problem. .. GENERATED FROM PYTHON SOURCE LINES 180-182 .. code-block:: default algo.run() .. GENERATED FROM PYTHON SOURCE LINES 183-185 .. code-block:: default calibrationResult = algo.getResult() .. GENERATED FROM PYTHON SOURCE LINES 186-188 Analysis of the results ----------------------- .. GENERATED FROM PYTHON SOURCE LINES 190-191 The `getParameterMAP` method returns the maximum of the posterior distribution of :math:`\theta`. .. GENERATED FROM PYTHON SOURCE LINES 193-196 .. code-block:: default thetaMAP = calibrationResult.getParameterMAP() thetaMAP .. raw:: html

[7.42395e+08,3.4611e+09,17.2407]



.. GENERATED FROM PYTHON SOURCE LINES 197-198 We can compute a 95% confidence interval of the parameter :math:`\theta^\star`. .. GENERATED FROM PYTHON SOURCE LINES 200-203 .. code-block:: default thetaPosterior = calibrationResult.getParameterPosterior() thetaPosterior.computeBilateralConfidenceIntervalWithMarginalProbability(0.95)[0] .. raw:: html

[7.3351e+08, 7.50362e+08]
[2.80534e+09, 4.17281e+09]
[11.0128, 23.8404]



.. GENERATED FROM PYTHON SOURCE LINES 204-205 We can see that all three parameters are estimated with a large confidence interval. .. GENERATED FROM PYTHON SOURCE LINES 207-211 .. code-block:: default graph = calibrationResult.drawObservationsVsInputs() graph.setLegendPosition("topleft") view = viewer.View(graph) .. image:: /auto_calibration/least_squares_and_gaussian_calibration/images/sphx_glr_plot_calibration_chaboche_007.png :alt: plot calibration chaboche :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 212-213 We see that there is a good fit after calibration, since the predictions after calibration (i.e. the green crosses) are close to the observations (i.e. the blue crosses). .. GENERATED FROM PYTHON SOURCE LINES 215-218 .. code-block:: default graph = calibrationResult.drawObservationsVsPredictions() view = viewer.View(graph) .. image:: /auto_calibration/least_squares_and_gaussian_calibration/images/sphx_glr_plot_calibration_chaboche_008.png :alt: plot calibration chaboche :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 219-220 We see that there is a much better fit after calibration, since the predictions are close to the diagonal of the graphics. .. GENERATED FROM PYTHON SOURCE LINES 222-225 .. code-block:: default observationError = calibrationResult.getObservationsError() observationError .. raw:: html

Normal(mu = -1142.34, sigma = 1.15671e+07)



.. GENERATED FROM PYTHON SOURCE LINES 226-229 .. code-block:: default graph = observationError.drawPDF() view = viewer.View(graph) .. image:: /auto_calibration/least_squares_and_gaussian_calibration/images/sphx_glr_plot_calibration_chaboche_009.png :alt: plot calibration chaboche :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 230-234 .. code-block:: default graph = calibrationResult.drawResiduals() graph.setLegendPosition("topleft") view = viewer.View(graph) .. image:: /auto_calibration/least_squares_and_gaussian_calibration/images/sphx_glr_plot_calibration_chaboche_010.png :alt: , Residual analysis :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 235-238 The analysis of the residuals shows that the distribution is centered on zero and symmetric. This indicates that the calibration performed well. Moreover, the distribution of the residuals is close to being gaussian. This indicates that the observation error might be gaussian. .. GENERATED FROM PYTHON SOURCE LINES 240-243 .. code-block:: default graph = calibrationResult.drawParameterDistributions() view = viewer.View(graph) .. image:: /auto_calibration/least_squares_and_gaussian_calibration/images/sphx_glr_plot_calibration_chaboche_011.png :alt: plot calibration chaboche :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 244-246 Gaussian calibration parameters ------------------------------- .. GENERATED FROM PYTHON SOURCE LINES 248-249 The standard deviation of the observations errors. .. GENERATED FROM PYTHON SOURCE LINES 251-253 .. code-block:: default sigmaStress = 1.0e7 # (Pa) .. GENERATED FROM PYTHON SOURCE LINES 254-255 Define the covariance matrix of the output Y of the model. .. GENERATED FROM PYTHON SOURCE LINES 257-260 .. code-block:: default errorCovariance = ot.CovarianceMatrix(1) errorCovariance[0, 0] = sigmaStress ** 2 .. GENERATED FROM PYTHON SOURCE LINES 261-262 Define the covariance matrix of the parameters :math:`\theta` to calibrate. .. GENERATED FROM PYTHON SOURCE LINES 264-268 .. code-block:: default sigmaR = 0.1 * R sigmaC = 0.1 * C sigmaGamma = 0.1 * Gamma .. GENERATED FROM PYTHON SOURCE LINES 269-275 .. code-block:: default sigma = ot.CovarianceMatrix(3) sigma[0, 0] = sigmaR ** 2 sigma[1, 1] = sigmaC ** 2 sigma[2, 2] = sigmaGamma ** 2 sigma .. raw:: html

[[ 4.9e+15 0 0 ]
[ 0 6.25e+16 0 ]
[ 0 0 0.64 ]]



.. GENERATED FROM PYTHON SOURCE LINES 276-278 Gaussian linear calibration --------------------------- .. GENERATED FROM PYTHON SOURCE LINES 280-281 The `GaussianLinearCalibration` class performs the gaussian linear calibration by linearizing the model in the neighbourhood of the prior. .. GENERATED FROM PYTHON SOURCE LINES 283-287 .. code-block:: default algo = ot.GaussianLinearCalibration( mycf, observedStrain, observedStress, thetaPrior, sigma, errorCovariance ) .. GENERATED FROM PYTHON SOURCE LINES 288-289 The `run` method computes the solution of the problem. .. GENERATED FROM PYTHON SOURCE LINES 291-293 .. code-block:: default algo.run() .. GENERATED FROM PYTHON SOURCE LINES 294-296 .. code-block:: default calibrationResult = algo.getResult() .. GENERATED FROM PYTHON SOURCE LINES 297-299 Analysis of the results ----------------------- .. GENERATED FROM PYTHON SOURCE LINES 301-302 The `getParameterMAP` method returns the maximum of the posterior distribution of :math:`\theta`. .. GENERATED FROM PYTHON SOURCE LINES 304-307 .. code-block:: default thetaMAP = calibrationResult.getParameterMAP() thetaMAP .. raw:: html

[7.5128e+08,2.59561e+09,8.44106]



.. GENERATED FROM PYTHON SOURCE LINES 308-309 We can compute a 95% confidence interval of the parameter :math:`\theta^\star`. .. GENERATED FROM PYTHON SOURCE LINES 311-314 .. code-block:: default thetaPosterior = calibrationResult.getParameterPosterior() thetaPosterior.computeBilateralConfidenceIntervalWithMarginalProbability(0.95)[0] .. raw:: html

[7.46056e+08, 7.56505e+08]
[2.40038e+09, 2.79083e+09]
[6.72865, 10.1535]



.. GENERATED FROM PYTHON SOURCE LINES 315-316 We can see that all three parameters are estimated with a large confidence interval. .. GENERATED FROM PYTHON SOURCE LINES 318-322 .. code-block:: default graph = calibrationResult.drawObservationsVsInputs() graph.setLegendPosition("topleft") view = viewer.View(graph) .. image:: /auto_calibration/least_squares_and_gaussian_calibration/images/sphx_glr_plot_calibration_chaboche_012.png :alt: plot calibration chaboche :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 323-324 We see that there is a good fit after calibration, since the predictions after calibration (i.e. the green crosses) are close to the observations (i.e. the blue crosses). .. GENERATED FROM PYTHON SOURCE LINES 326-329 .. code-block:: default graph = calibrationResult.drawObservationsVsPredictions() view = viewer.View(graph) .. image:: /auto_calibration/least_squares_and_gaussian_calibration/images/sphx_glr_plot_calibration_chaboche_013.png :alt: plot calibration chaboche :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 330-331 We see that there is a much better fit after calibration, since the predictions are close to the diagonal of the graphics. .. GENERATED FROM PYTHON SOURCE LINES 333-334 The observation error is predicted by linearizing the problem at the prior. .. GENERATED FROM PYTHON SOURCE LINES 336-339 .. code-block:: default observationError = calibrationResult.getObservationsError() observationError .. raw:: html

Normal(mu = 0, sigma = 1e+07)



.. GENERATED FROM PYTHON SOURCE LINES 340-341 This can be compared to the residuals distribution, which is computed at the posterior. .. GENERATED FROM PYTHON SOURCE LINES 343-347 .. code-block:: default graph = calibrationResult.drawResiduals() graph.setLegendPosition("topleft") view = viewer.View(graph) .. image:: /auto_calibration/least_squares_and_gaussian_calibration/images/sphx_glr_plot_calibration_chaboche_014.png :alt: , Residual analysis :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 348-349 The analysis of the gaussian distribution (the blue line) of the observation errors is close to the posterior distribution of the residuals (the green line). Moreover, the posterior distribution is centered. These informations indicate that the calibration performed well. .. GENERATED FROM PYTHON SOURCE LINES 351-354 .. code-block:: default graph = calibrationResult.drawParameterDistributions() view = viewer.View(graph) .. image:: /auto_calibration/least_squares_and_gaussian_calibration/images/sphx_glr_plot_calibration_chaboche_015.png :alt: plot calibration chaboche :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 355-358 For the :math:`R` variable, the observations are much more important than the prior: this is shown by the fact that the posterior and prior distribution of the :math:`R` variable are very different. We see that the prior and posterior distribution are close to each other for the :math:`\gamma` variable: the observations did not convey much information for this variable. .. GENERATED FROM PYTHON SOURCE LINES 360-362 Gaussian nonlinear calibration ------------------------------ .. GENERATED FROM PYTHON SOURCE LINES 364-365 The `GaussianNonLinearCalibration` class performs the gaussian nonlinear calibration. .. GENERATED FROM PYTHON SOURCE LINES 367-371 .. code-block:: default algo = ot.GaussianNonLinearCalibration( mycf, observedStrain, observedStress, thetaPrior, sigma, errorCovariance ) .. GENERATED FROM PYTHON SOURCE LINES 372-373 The `run` method computes the solution of the problem. .. GENERATED FROM PYTHON SOURCE LINES 375-377 .. code-block:: default algo.run() .. GENERATED FROM PYTHON SOURCE LINES 378-380 .. code-block:: default calibrationResult = algo.getResult() .. GENERATED FROM PYTHON SOURCE LINES 381-383 Analysis of the results ----------------------- .. GENERATED FROM PYTHON SOURCE LINES 385-386 The `getParameterMAP` method returns the maximum of the posterior distribution of :math:`\theta`. .. GENERATED FROM PYTHON SOURCE LINES 388-391 .. code-block:: default thetaMAP = calibrationResult.getParameterMAP() thetaMAP .. raw:: html

[7.50518e+08,2.63291e+09,8.65041]



.. GENERATED FROM PYTHON SOURCE LINES 392-393 We can compute a 95% confidence interval of the parameter :math:`\theta^\star`. .. GENERATED FROM PYTHON SOURCE LINES 395-398 .. code-block:: default thetaPosterior = calibrationResult.getParameterPosterior() thetaPosterior.computeBilateralConfidenceIntervalWithMarginalProbability(0.95)[0] .. raw:: html

[7.43677e+08, 7.56803e+08]
[2.4655e+09, 2.88065e+09]
[8.60204, 9.82014]



.. GENERATED FROM PYTHON SOURCE LINES 399-400 We can see that all three parameters are estimated with a large confidence interval. .. GENERATED FROM PYTHON SOURCE LINES 402-406 .. code-block:: default graph = calibrationResult.drawObservationsVsInputs() graph.setLegendPosition("topleft") view = viewer.View(graph) .. image:: /auto_calibration/least_squares_and_gaussian_calibration/images/sphx_glr_plot_calibration_chaboche_016.png :alt: plot calibration chaboche :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 407-408 We see that there is a good fit after calibration, since the predictions after calibration (i.e. the green crosses) are close to the observations (i.e. the blue crosses). .. GENERATED FROM PYTHON SOURCE LINES 410-413 .. code-block:: default graph = calibrationResult.drawObservationsVsPredictions() view = viewer.View(graph) .. image:: /auto_calibration/least_squares_and_gaussian_calibration/images/sphx_glr_plot_calibration_chaboche_017.png :alt: plot calibration chaboche :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 414-415 We see that there is a much better fit after calibration, since the predictions are close to the diagonal of the graphics. .. GENERATED FROM PYTHON SOURCE LINES 417-418 The observation error is predicted by bootstraping the problem at the posterior. .. GENERATED FROM PYTHON SOURCE LINES 420-423 .. code-block:: default observationError = calibrationResult.getObservationsError() observationError .. raw:: html

Normal(mu = -24686.6, sigma = 1e+07)



.. GENERATED FROM PYTHON SOURCE LINES 424-425 This can be compared to the residuals distribution, which is computed at the posterior. .. GENERATED FROM PYTHON SOURCE LINES 427-430 .. code-block:: default graph = calibrationResult.drawResiduals() view = viewer.View(graph) .. image:: /auto_calibration/least_squares_and_gaussian_calibration/images/sphx_glr_plot_calibration_chaboche_018.png :alt: , Residual analysis :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 431-432 The analysis is very similar to the linear calibration. .. GENERATED FROM PYTHON SOURCE LINES 434-438 .. code-block:: default graph = calibrationResult.drawParameterDistributions() view = viewer.View(graph) plt.show() .. image:: /auto_calibration/least_squares_and_gaussian_calibration/images/sphx_glr_plot_calibration_chaboche_019.png :alt: plot calibration chaboche :class: sphx-glr-single-img .. GENERATED FROM PYTHON SOURCE LINES 439-440 We see that the prior and posterior distribution for the :math:`\gamma` parameter are close to each other, but not superimposed: the observations significantly brought information to the variable :math:`\gamma` during the calibration. .. rst-class:: sphx-glr-timing **Total running time of the script:** ( 0 minutes 9.525 seconds) .. _sphx_glr_download_auto_calibration_least_squares_and_gaussian_calibration_plot_calibration_chaboche.py: .. only :: html .. container:: sphx-glr-footer :class: sphx-glr-footer-example .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_calibration_chaboche.py ` .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_calibration_chaboche.ipynb ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_