The Ramberg-Osgood method is a material model used to extend the linear elastic region to include plastic deformation. The correlation between stress and plastic strain is described by an exponential factor. The material model is described mathematically by the following equations.
Calculix ccx has access to this material model through the *DEFORMATION PLASTICITY
input card. In order to use it, the Ramerg-Osgood parameter must be calculated. This means stress-strain data from an experimental or reference source is necessary. The ASM Atlas of Stress-Strain Curves is hosted online by Google Books. Not all of it is available, however, it does have thousands of curves to reference. Simply take a screen shot of the desired page and use this article to digitize the data into a CSV file. The SciLab program below calculates the value for the Ramberg-Osgood parameter based on the method outlined in the Mil-5 Handbook section 9.3.2.4. The section from the book is available for download from their site or at this link.
The value of n, the Ramberg-Osgood parameter, is equal to the inverse of the linear regression line slope which passes through the plastic strain vs stress points on a log-log plot. The following image shows this plot for the 1020 cold drawn steel sample which was described in the article about digitizing data from an image. The SciLab program stores the value of the slope in the variable a
which is output to the terminal window. In the case of the 1020 cold drawn steel, a
equals 0.143 which leads to n=7.
The following plot shows the data points from the digitized curve with the resulting Ramberg-Osgood stress-strain curve model shown in bold red. This curve is a combination of the elastic and plastic parts up to the 0.2% yield strength.
The Ramberg-Osgood model is valuable in this case because the cold worked steel does not display the typical sharp plateau at the elastic limit common to hot rolled mild steel. In the case of 1020 cold rolled steel the usable engineering range is extended by choosing to design around the 0.2% yield strength and the Ramberg-Osgood material model is a convienent method to capture this information. Instead of using the *ELASTIC
card and engineering at the limit of elasticity the *DEFORMATION PLASTICITY
card is used and the full yield strength of the materials is captured at the 0.2% yield offset. However, this is not a hard and fast rule and it is always appropriate to make sure the analysis choices match well with the desired requirements for the part’s functionality.
The SciLab program and 1020 cold roll steel CSV file is available for download from this link as a zip file. The source code is shown below.
path = pwd();
fid = mopen(path + "\1020_cold_worked.csv", "r");
if (fid == -1)
error("File was not able to be opened for reading");
end
i=1;
done=0;
while (done == 0)
[num_read, strain(i), stress(i)] = mfscanf(fid, "%f,%f");
if(num_read > 0)
strain(i) = strain(i)*10^-3;
stress(i) = stress(i)*10^3;
end
i=i+1;
if(num_read <= 0) done = 1; end end mclose(fid); printf("End of data from file\n"); E=30*10^6; strainElastic = stress/E; strainPlastic = strain - strainElastic; k=1; rambergStrain=[0 0]; rambergStress=[0 0]; for j = 1 : 1 : max(size(strain)) if( strainPlastic(j) >= (0.0002*0.98) & strainPlastic(j) < (0.002*1.02) )
printf("INDEX = %i --- STRESS = %5.1f --- PLASTIC STRAIN = %0.5f\n", j, stress(j), strainPlastic(j));
rambergStrain(k) = strainPlastic(j);
rambergStress(k) = stress(j);
k=k+1;
end
end
[a,b,sig]=reglin( log(rambergStrain), log(rambergStress) )
subplot(2,1,1)
plot2d( log(rambergStrain), log(rambergStress), style=-1)
plot2d( log(rambergStrain), a*log(rambergStrain)+b)
currentAxis=get("current_axes");
currentAxis.x_label.font_size=3;
currentAxis.y_label.font_size=3;
currentAxis.title.font_size=3;
xtitle('Ramberg Osgood Linear Regression 1020 Cold Roll Steel','Logarithmic Strain (in/in)','Logarithmic Stress (psi)');
subplot(2,1,2)
plot2d(strain, stress, style=-1);
stressYield=66000;
calculatedStress = 0 : 1000 : stressYield;
calculatedStrain = calculatedStress/E + 0.002*(calculatedStress/stressYield)^(1/a);
plot2d(calculatedStrain,calculatedStress,style=5);
currentAxis=get("current_axes");
currentAxis.x_label.font_size=3;
currentAxis.y_label.font_size=3;
currentAxis.title.font_size=3;
a1=gca();
a1.children.children(1).thickness=3;
xtitle('Stress Strain Curve 1020 Cold Roll Steel','Engineering Strain (in/in)','Engineering Stress (psi)');
Thanks for reading!
-Ty Beede