📄 compaeroscode.htm
字号:
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta name="Author" content="Christian W. Wenger">
<meta name="GENERATOR" content="Mozilla/4.72 [en] (WinNT; U) [Netscape]">
<title>CompAeroSCode</title>
</head>
<body>
<center><u><font size=+3>Source Code</font></u>
<br>
<hr SIZE=5 WIDTH="100%">
<br><u>Developed at the Department of Aerospace and Ocean Engineering,
Virginia Tech by William J. Devenport</u>
<br>
<hr SIZE=5 WIDTH="100%"></center>
function isent(form) {
<br> i=form.i.selectedIndex
<br> g=eval(form.g.value)
<br> v=eval(form.v.value)
<br> if(g<=1.0) {
<br> alert("gamma must be greater than 1")
<br> return}
<p> if(i==1) {
<br> if(v>=1.0 || v<=0.0) {
<br> alert("T/T0 must be between 0 and 1")
<br> return}
<br> m=Math.sqrt(2.*((1./v)-1.)/(g-1.))}
<br> else if(i==2) {
<br> if(v>=1.0 || v<=0.0) {
<br> alert("p/p0 must be between 0 and 1")
<br> return}
<br> m=Math.sqrt(2.*((1./Math.pow(v,(g-1.)/g))-1.)/(g-1.))}
<br> else if(i==3) {
<br> if(v>=1.0 || v<=0.0) {
<br> alert("rho/rho0 must be between 0 and
1")
<br> return}
<br> m=Math.sqrt(2.*((1./Math.pow(v,(g-1.)))-1.)/(g-1.))}
<br> else if(i==4 || i==5) {
<br> if(v<=1.0) {
<br> alert("A/A* must be greater than 1")
<br> return}
<br> mnew=0.00001
<br> m=0.0
<br> if(i==5) {mnew=2.}
<br> while( Math.abs(mnew-m) > 0.000001) {
<br> m=mnew
<br> phi=aas(g,m)
<br> s=(3. - g) / (1. + g)
<br> mnew=m - (phi - v) / (Math.pow(phi *
m,s) - phi / m)}}
<br> else if(i==6) {
<br> if(v<=0.0 || v>=90.0) {
<br> alert("Mach angle must be between 0
and 90")
<br> return}
<br> m=1./Math.sin(v*3.14159265359/180.)}
<br> else if(i==7) {
<br> numax=(Math.sqrt((g+1.)/(g-1.))-1)*90.
<br> if(v<=0.0 || v>=numax) {
<br> alert("Prandtl-Meyer angle must be between
0 and "+format(""+numax))
<br> return}
<br> mnew=2.0
<br> m=0.0
<br> while( Math.abs(mnew-m) > 0.00001) {
<br> m=mnew
<br> fm=(nu(g,m)-v)*3.14159265359/180.
<br> fdm=Math.sqrt(m*m-1.)/(1+0.5*(g-1.)*m*m)/m
<br> mnew=m-fm/fdm}}
<br> else {
<br> if(v<=0.0) {
<br> alert("M must be greater than 0")
<br> return}
<br> m=v}
<br> form.m.value=format(""+m)
<br> if(m>1.) {
<br> form.mu.value=format(""+Math.asin(1./m)*180/3.14159265359)
<br> form.nu.value=format(""+nu(g,m))}
<br> else if (m==1) {
<br> form.mu.value=90.
<br> form.nu.value=0.}
<br> else {
<br> form.mu.value=""
<br> form.nu.value=""}
<br> form.tt0.value = format(""+tt0(g,m))
<br> form.pp0.value = format(""+pp0(g,m))
<br> form.rr0.value = format(""+rr0(g,m))
<br> form.tts.value = format(""+tts(g,m))
<br> form.pps.value = format(""+pps(g,m))
<br> form.rrs.value = format(""+rrs(g,m))
<br> form.aas.value = format(""+aas(g,m))
<br>}
<p>function nsr(form) {
<br> i=form.i.selectedIndex
<br> g=eval(form.g.value)
<br> v=eval(form.v.value)
<br> if(g<=1.0) {
<br> alert("gamma must be greater than 1")
<br> return}
<p> if(i==1) {
<br> if(v>=1.0 || v<=Math.sqrt((g-1.)/2./g)) {
<br> alert("M2 must be between "+ format(""+Math.sqrt((g-1.)/2./g))+"
and 1")
<br> return}
<br> m1=m2(g,v)}
<br> else if(i==2) {
<br> if(v<=1.0) {
<br> alert("p2/p1 must be greater than 1")
<br> return}
<br> m1=Math.sqrt((v-1.)*(g+1.)/2./g +1.)}
<br> else if(i==3) {
<br> if(v<=1.0 || v>=(g+1.)/(g-1.)) {
<br> alert("rho2/rho1 must be between 1 and
"+format(""+((g+1.)/(g-1.))))
<br> return}
<br> m1=Math.sqrt(2.*v/(g+1.-v*(g-1.)))}
<br> else if(i==4) {
<br> if(v<=1.0) {
<br> alert("T2/T1 must be greater than 1")
<br> return}
<br> aa=2.*g*(g-1.)
<br> bb=4.*g-(g-1.)*(g-1.)-v*(g+1.)*(g+1.)
<br> cc=-2.*(g-1.)
<br> m1=Math.sqrt((-bb+Math.sqrt(bb*bb-4.*aa*cc))/2./aa)}
<br> else if(i==5) {
<br> if(v>=1.0 || v<=0.0) {
<br> alert("p02/p01 must be between 0 and
1")
<br> return}
<br> mnew=2.0
<br> m1=0.0
<br> while( Math.abs(mnew-m1) > 0.00001) {
<br> m1=mnew
<br> al=(g+1.)*m1*m1/((g-1.)*m1*m1+2.)
<br> be=(g+1.)/(2.*g*m1*m1-(g-1.))
<br> daldm1=(2./m1-2.*m1*(g-1.)/((g-1.)*m1*m1+2.))*al
<br> dbedm1=-4.*g*m1*be/(2.*g*m1*m1-(g-1.))
<br> fm=Math.pow(al,g/(g-1.))*Math.pow(be,1./(g-1.))-v
<br> fdm=g/(g-1.)*Math.pow(al,1/(g-1.))*daldm1*Math.pow(be,1./(g-1.))+Math.pow(al,g/(g-1.))/(g-1.)*Math.pow(be,(2.-g)/(g-1.))*dbedm1
<br> mnew=m1-fm/fdm}}
<br> else if(i==6) {
<br> vmax=Math.pow((g+1.)/2.,-g/(g-1.))
<br> if(v>=vmax || v<=0.0) {
<br> alert("p1/p02 must be between 0 and
"+format(""+vmax))
<br> return}
<br> mnew=2.0
<br> m1=0.0
<br> while( Math.abs(mnew-m1) > 0.00001) {
<br> m1=mnew
<br> al=(g+1.)*m1*m1/2.
<br> be=(g+1.)/(2.*g*m1*m1-(g-1.))
<br> daldm1=m1*(g+1.)
<br> dbedm1=-4.*g*m1*be/(2.*g*m1*m1-(g-1.))
<br> fm=Math.pow(al,g/(g-1.))*Math.pow(be,1./(g-1.))-1./v
<br> fdm=g/(g-1.)*Math.pow(al,1/(g-1.))*daldm1*Math.pow(be,1./(g-1.))+Math.pow(al,g/(g-1.))/(g-1.)*Math.pow(be,(2.-g)/(g-1.))*dbedm1
<br> mnew=m1-fm/fdm}}
<br>
<br> else {
<br> if(v<=1.0) {
<br> alert("M1 must be greater than 1")
<br> return}
<br> m1=v}
<br> form.m1.value=format(""+m1)
<br> form.m2.value=format(""+m2(g,m1))
<br> p2p1=1.+2.*g/(g+1.)*(m1*m1-1.)
<br> form.p2p1.value = format(""+p2p1)
<br> p02p01=pp0(g,m1)/pp0(g,m2(g,m1))*p2p1
<br> form.p02p01.value=format(""+p02p01)
<br> form.r2r1.value=format(""+rr0(g,m2(g,m1))/rr0(g,m1)*p02p01)
<br> form.t2t1.value=format(""+tt0(g,m2(g,m1))/tt0(g,m1))
<br> form.p1p02.value=format(""+pp0(g,m1)/p02p01)
<p>}
<p>function osr(form) {
<br> i=form.i.selectedIndex
<br> g=eval(form.g.value)
<br> m1=eval(form.m.value)
<br> if(g<=1.0) {
<br> alert("gamma must be greater than 1")
<br> return}
<p> if(m1<=1.0) {
<br> alert("m1 must be greater than 1")
<br> return}
<br> if(i==0 || i==1) {
<br> delta=eval(form.a.value)*3.14159265359/180.
<br> if(delta>=3.14159265359/2.) {
<br> alert("Turning angle too large")
<br> return}
<br> if(delta<=0.0) {
<br> alert("Turning angle must be greater
than zero")
<br> return}
<br> beta=mdb(g,m1,delta,i)
<br> if(beta<0.0) {
<br> form.beta.value=""
<br> form.delta.value=""
<br> form.m1n.value=""
<br> form.m2n.value=""
<br> form.m2.value="Shock"
<br> form.p2p1.value ="Detached"
<br> form.p02p01.value=""
<br> form.r2r1.value=""
<br> form.t2t1.value=""
<br> return}}
<br> else if(i==2) {
<br> beta=eval(form.a.value)*3.14159265359/180.
<br> if(beta>=3.14159265359/2.) {
<br> alert("Wave angle must be less than
90 deg.")
<br> return}
<br> if(beta-Math.asin(1./m1)<=0.0) {
<br> alert("Wave angle must be greater than
Mach angle")
<br> return}
<br> delta=mbd(g,m1,beta)}
<br> else if(i==3) {
<br> m1n=eval(form.a.value)
<br> if(m1n<=1.0 || m1n>=m1) {
<br> alert("M1n must be between 1 and M1")
<br> return}
<br> beta=Math.asin(m1n/m1)
<br> delta=mbd(g,m1,beta)}
<p> m1n=m1*Math.sin(beta)
<br> form.beta.value=format(""+beta*180./3.14159265359)
<br> form.delta.value=format(""+delta*180/3.14159265359)
<br> form.m1n.value=format(""+m1n)
<br> form.m2n.value=format(""+m2(g,m1n))
<br> form.m2.value=format(""+form.m2n.value/Math.sin(beta-delta))
<br> p2p1 = 1.+2.*g/(g+1.)*(m1n*m1n-1.)
<br> form.p2p1.value = format(""+p2p1)
<br> p02p01=pp0(g,m1n)/pp0(g,m2(g,m1n))*p2p1
<br> form.p02p01.value= format(""+p02p01)
<br> form.r2r1.value=format(""+rr0(g,m2(g,m1n))/rr0(g,m1n)*p02p01)
<br> form.t2t1.value=format(""+tt0(g,m2(g,m1n))/tt0(g,m1n))
<p>}
<br>function tt0(g,m) {
<br> return Math.pow((1.+(g-1.)/2.*m*m),-1.)}
<p>function pp0(g,m) {
<br> return Math.pow((1.+(g-1.)/2.*m*m),-g/(g-1.))}
<p>function rr0(g,m) {
<br> return Math.pow((1.+(g-1.)/2.*m*m),-1./(g-1.))}
<p>function tts(g,m) {
<br> return tt0(g,m)*(g/2. + .5)}
<p>function pps(g,m) {
<br> return pp0(g,m)*Math.pow((g/2. + .5),g/(g-1.))}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -