University of Wisconsin–Madison

Gasdynamics Calculator

function calcShock() {

var p1,p2,p5,p2p1,p5p2; //pressure and ratio

var t1,t2,t5,t2t1,t5t2; //temperature and ratio

var d1,d2,d5,d2d1,d5d2; //density and ratio

var a1,a2,a5; //speed of sound

var m,g,gp,gm,mw,ru,r;

var u2,w;

var mr,wr;

var g4,mw4,a4,p4p1,p4,r4,t4,areafactor;

var d4,p4p1exp,p4p1arg;

m = parseFloat(document.Shock.mach.value);

p1 = parseFloat(document.Shock.pinit.value);

t1 = parseFloat(document.Shock.tinit.value);

areafactor = parseFloat(document.Shock.areafact.value);

//decide driven gas;

if (document.Shock.drivengas.value == “1”){

g=parseFloat(1.4020);

mw=parseFloat(28.9660);

}

if (document.Shock.drivengas.value == “2”){

g=parseFloat(1.6700);

mw=parseFloat(39.948000);

}

if (document.Shock.drivengas.value == “3”){

g=parseFloat(1.29700);

mw=parseFloat(44.01000);

}

if (document.Shock.drivengas.value == “4”){

g=parseFloat(1.66700);

mw=parseFloat(4.002602000);

}

if (document.Shock.drivengas.value == “5”){

g=parseFloat(1.66700);

mw=parseFloat(20.179700);

}

if (document.Shock.drivengas.value == “6”){

g=parseFloat(1.40100);

mw=parseFloat(28.0134000);

}

if (document.Shock.drivengas.value == “7”){

g=parseFloat(1.66700);

mw=parseFloat(131.29000);

}

if (document.Shock.drivengas.value == “8”){

g=parseFloat(1.09200);

mw=parseFloat(146.06000);

}

if (document.Shock.drivengas.value == “9”){

g=parseFloat(1.668);

mw=parseFloat(21.98);

}

// decide driver gas

if (document.Shock.drivergas.value == “1”){

g4=parseFloat(1.4020);

mw4=parseFloat(28.9660);

}

if (document.Shock.drivergas.value == “2”){

g4=parseFloat(1.6700);

mw4=parseFloat(39.948000);

}

if (document.Shock.drivergas.value == “3”){

g4=parseFloat(1.29700);

mw4=parseFloat(44.01000);

}

if (document.Shock.drivergas.value == “4”){

g4=parseFloat(1.66700);

mw4=parseFloat(4.002602000);

}

if (document.Shock.drivergas.value == “5”){

g4=parseFloat(1.66700);

mw4=parseFloat(20.179700);

}

if (document.Shock.drivergas.value == “6”){

g4=parseFloat(1.40100);

mw4=parseFloat(28.0134000);

}

if (document.Shock.drivergas.value == “7”){

g4=parseFloat(1.66700);

mw4=parseFloat(131.29000);

}

if (document.Shock.drivergas.value == “8”){

g4=parseFloat(1.09200);

mw4=parseFloat(146.06000);

}

t4 = parseFloat(document.Shock.tid.value);

//document.write(“t4 ” + t4 + ” “);

gp = g + 1.00;

gm = g – 1.00;

//document.write(“gm ” + gm + ” “);

//document.write(“g ” + g + ” “);

//document.write(“mw ” + mw + ” “);

ru=parseFloat(8314.510);

//document.write(“ru ” + ru + ” “);

r=ru/mw;

//document.write(“r ” + r + ” “);

a1=Math.sqrt(g*r*t1);

w=a1*m;

d1=p1/r/t1;

//document.write(“p2 ” + t1 + ” “);

//document.write(“gp ” + gp + ” “);

//document.write(“gm ” + gm + ” “);

//ees p2p1=1+((2*gamma_1)/gp_1)*(M_init^2-1);

//

// State 2 properties

//

p2p1=1+2*g/gp*(Math.pow(m,2)-1);

p2=p2p1*p1;

t2t1=p2p1*((gp/gm+p2p1)/(1+gp/gm*p2p1));

t2=t2t1*t1;

a2=Math.sqrt(g*r*t2);

//ees rho2rho1=(1+gp_1/gm_1*p2p1)/(gp_1/gm_1+p2p1)

d2d1=(1+(gp/gm)*p2p1)/(gp/gm+p2p1);

d2=d2d1*d1;

//ees u_2=c_1/gamma_1*(p2p1-1)*((2*gamma_1/gp_1)/(p2p1+gm_1/gp_1))^0.5

u2=a1/g*(p2p1-1)*(Math.sqrt((2*g/gp)/(p2p1+gm/gp)));

//

// State 4 properties

//

//document.write(“gm ” + gm + ” “);

r4=ru/mw4;

a4=Math.sqrt(g4*r4*t4);

//ees p4p1=p2p1*(1-((gamma_4-1)*(a_1/a_4)*(p2p1-1))/sqrt(2*gamma_1*(2*gamma_1+;

// (gamma_1+1)*(p2p1-1))))^(-2*gamma_4/(gamma_4-1)) ;

p4p1exp=(-2*g4/(g4-1));

p4p1arg=(1-((g4-1)*(a1/a4)*(p2p1-1))/Math.sqrt(2*g*(2*g+gp*(p2p1-1))));

p4p1=p2p1*Math.pow(p4p1arg,p4p1exp);

p4=p4p1*p1;

d4=p4/r4/t4;

//document.write(“t4 ” + t4 + ” “);

//document.write(“a4 ” + a4 + ” “);

//

// State 5 properties

//

p5p2=((3*g-1)*p2p1-gm)/(gm*p2p1+gp);

p5=p5p2*p2;

t5t2=p5p2*((gp/gm+p5p2)/(1+gp/gm*p5p2));

t5=t5t2*t2;

d5d2=(1+(gp/gm)*p5p2)/(gp/gm+p5p2);

d5=d5d2*d2;

a5=Math.sqrt(g*r*t5);

wr=(d2*u2)/(d5-d2);

mr=(wr+u2)/a2;

document.Shock.pdriv.value = p1/1e6;

document.Shock.tdriv.value = t1;

document.Shock.ddriv.value = d1;

document.Shock.adriv.value = a1;

document.Shock.pshocked.value = p2/1e6;

document.Shock.tshocked.value = t2;

document.Shock.dshocked.value = d2;

document.Shock.ashocked.value = a2;

document.Shock.ushocked.value = u2;

document.Shock.pfour.value = p4/1e6;

document.Shock.pfourpsig.value = (((p4-101325.0)/101325.0)*14.696)/areafactor;

document.Shock.tfour.value = t4;

document.Shock.dfour.value = d4;

document.Shock.afour.value = a4;

document.Shock.preflect.value = p5/1e6;

document.Shock.treflect.value = t5;

document.Shock.dreflect.value = d5;

document.Shock.areflect.value = a5;

document.Shock.wreflect.value = wr;

document.Shock.mreflect.value = mr;

document.Shock.wshocked.value = w;

document.Shock.outmw.value = mw;

document.Shock.outgamma.value = g;

}

function calcTime() {

var xwave,xtrig,twave,wactual,mactual,xint;

var tdelayshock,tdelaymembrane,u2;

xwave = parseFloat(document.Timing.xwave.value);

twave = parseFloat(document.Timing.twave.value)/1000.00;

u2 = parseFloat(document.Shock.ushocked.value);

wactual=xwave/twave;

mactual=wactual/parseFloat(document.Shock.adriv.value);

xtrig = parseFloat(document.Timing.xtrig.value);

xint = parseFloat(document.Timing.xint.value);

tdelayshock=xtrig/wactual*1000;

tdelaymembrane=(xint)/wactual*1000+(xtrig-xint)/u2*1000;

document.Timing.wactual.value = wactual;

document.Timing.mactual.value = mactual;

document.Timing.tdelayshock.value = tdelayshock;

document.Timing.tdelaymembrane.value = tdelaymembrane;

}

function calcBoost() {

var drivervol,boostvol,prupture,percless,percmore,ru;

var r,mw4,g4,psig,ppa,ppreboost,ppostboost,pboosttank;

var deltap,deltam,t;

psig=parseFloat(14.696);

ppa=parseFloat(101325);

drivervol = parseFloat(document.Boosttank.drivervol.value);

boostvol = parseFloat(document.Boosttank.boostvol.value);

prupture = parseFloat(document.Boosttank.prupture.value)*ppa/psig;

percless = parseFloat(document.Boosttank.percless.value);

percmore = parseFloat(document.Boosttank.percmore.value);

// decide driver gas

if (document.Shock.drivergas.value == “1”){

g4=parseFloat(1.4020);

mw4=parseFloat(28.9660);

}

if (document.Shock.drivergas.value == “2”){

g4=parseFloat(1.6700);

mw4=parseFloat(39.948000);

}

if (document.Shock.drivergas.value == “3”){

g4=parseFloat(1.29700);

mw4=parseFloat(44.01000);

}

if (document.Shock.drivergas.value == “4”){

g4=parseFloat(1.66700);

mw4=parseFloat(4.002602000);

}

if (document.Shock.drivergas.value == “5”){

g4=parseFloat(1.66700);

mw4=parseFloat(20.179700);

}

if (document.Shock.drivergas.value == “6”){

g4=parseFloat(1.40100);

mw4=parseFloat(28.0134000);

}

if (document.Shock.drivergas.value == “7”){

g4=parseFloat(1.66700);

mw4=parseFloat(131.29000);

}

if (document.Shock.drivergas.value == “8”){

g4=parseFloat(1.09200);

mw4=parseFloat(146.06000);

}

ru=parseFloat(8314.510);

// document.write(“ru ” + ru + ” “);

r=ru/mw4;

ppreboost=prupture*(1-percless/100);

ppostboost=prupture*(1+percmore/100);

deltap=ppostboost-ppreboost;

t=parseFloat(document.Shock.tid.value);

deltam=deltap*drivervol/r/t;

pboosttank=deltam/boostvol*r*t+prupture;

// document.write(“pboosttank ” + pboosttank + ” “);

document.Boosttank.ppreboost.value = ppreboost*psig/ppa

document.Boosttank.ppostboost.value = ppostboost*psig/ppa

document.Boosttank.pboosttank.value = pboosttank*psig/ppa

}