Laminate Curl Calculator
Quick Start
This calculates the curl from a mismatch of stresses in a 2-layer laminate caused by wrong tensions. For curl from T & %RH effects, see THC.
Credits
This is taken from the old AbbottApps which are based on inputs from web-handling experts Dr David Roisum, Dr Dilwyn Jones and Tim Walker.
Laminate Curl Calculator
//One universal basic required here to get things going once loaded
window.onload = function () {
//restoreDefaultValues(); //Un-comment this if you want to start with defaults
Main();
};
//Main() is hard wired as THE place to start calculating when inputs change
//It does no calculations itself, it merely sets them up, sends off variables, gets results and, if necessary, plots them.
function Main() {
//Save settings every time you calculate, so they're always ready on a reload
saveSettings();
//Send all the inputs as a structured object
//If you need to convert to, say, SI units, do it here!
const inputs = {
T1:sliders.SlideT1.value*9.81, //N from kg
Thick1: sliders.Slideh1.value /1e6, //μm to m
Mod1: sliders.SlideM1.value *1e9, //GPa to Pa
T2:sliders.SlideT2.value*9.81, //N from kg
Thick2: sliders.Slideh2.value /1e6, //μm to m
Mod2: sliders.SlideM2.value *1e9, //GPa to Pa
WebWidth:sliders.SlideWidth.value /1e3, //mm to m
};
//Send inputs off to CalcIt where the names are instantly available
//Get all the resonses as an object, result
const result = CalcIt(inputs);
document.getElementById('S1').value = result.S1;
document.getElementById('S2').value = result.S2;
document.getElementById('NM1').value = result.NM1;
document.getElementById('NM2').value = result.NM2;
document.getElementById('R').value = result.R;
if (result.plots) {
for (let i = 0; i < result.plots.length; i++) {
plotIt(result.plots[i], result.canvas[i]);
}
}
//You might have some other stuff to do here, but for most apps that's it for Main!
}
//Here's the app calculation
//The inputs are just the names provided - their order in the curly brackets is unimportant!
//By convention the input values are provided with the correct units within Main
function CalcIt({ T1, Thick1, Mod1, T2, Thick2, Mod2, WebWidth}) {
const Stretch1=T1/WebWidth/Mod1/Thick1
const Stretch2=T2/WebWidth/Mod2/Thick2
let TheCurl=0
const D1=Mod1*Thick1*Thick1*Thick1/12
const D2=Mod2*Thick2*Thick2*Thick2/12
const Top=2*(D1+D2)
const H12=Thick1+Thick2
const tmp=(Stretch1-Stretch2)/(1/(Mod1*Thick1)+1/(Mod2*Thick2)+H12*H12/(2*Top))
if (tmp !=0) TheCurl=1000*Top/(H12*tmp)
if (TheCurl>9999 || TheCurl<-9999) TheCurl=0
//Now we return everything - text boxes, plot and the name of the canvas, which is 'canvas' for a single plot
return {
S1:(100*Stretch1).toFixed(3),
S2:(100*Stretch2).toFixed(3),
NM1:(T1/WebWidth).toFixed(1),
NM2:(T2/WebWidth).toFixed(1),
R:TheCurl.toFixed(0),
};
}
Strain
A web of your chosen width will stretch under tension expressed in kg. The important factor is tension per unit width, N/m which is calculated for you - with N = 9.81*kg and m being your width. The % Strain (the scientific name for degree of stretching) gets larger for:
- Higher tension (for a given width)
- Smaller width (for a given tension)
- Thinner web
- Lower modulus
Curl
If the two %Strain are not the same then the laminate will tend to curl once it is out of the nip. The curl can be calculated in terms of its radius. The calculation is surprisingly complex and sometimes it takes a while to figure out why changing one of the inputs (such as modulus) produces the calculated result. This is because the curl depends not only on the differential stretch but also on the ability of the laminate as a whole to be bent - which depends on the combined modulus and thickness of the two webs.
A positive value of curl means that it curls with Laminate1 inside and a negative value means that it curls with Laminate2 on the inside.
A smaller radius means a tighter curl which may mean trouble further into production - when the roll is cut into sheets or even when the roll is in storage as that stretch likes to even itself out. Note that in these calculations, any curl with a radius >9999mm is shown as "0", meaning there is no curl.
The ideal is to get zero curl by ensuring that the two stretches are identical, which in practice means reducing the relative tension for the web with the lowest combination of ModulusxThickness.