You are on page 1of 19

CLS

SCREEN 12
OPEN "g:/cycle4.xls" FOR OUTPUT AS #6
DIM a(1000)
DIM aq(3000)
DIM coeff(500), areal(400), aimag(400)
DIM c(500), xr(400), xi(400), ac(400), bq(300), rt(300)
DIM equivalence(aq, bq)
'DIM aimag(400)
DIM u(70, 70)
COLOR 3
PRINT "
PRINT "
'PRINT "
'PRINT "

*******************
dr/AWAD RASHAD SYAM
*******************
************"

"
"
"

'PRINT "
**************************************************************"
'PRINT "
'PRINT
'PRINT "
**************************************************************"
'PRINT : PRINT : PRINT
'COLOR 2, 5, 11
'PRINT "
please...... open file cycle4 on partition ( G ) on your computer w
here the results are found"
'PRINT : PRINT : PRINT
'PRINT "

thank you

"

REM "otto cycle analysis program "


DIM b(7), fu(7), fudt(7), fv(7), p(2, 50), t(2, 50), work(2, 50), v(2, 50), vaf(
7)
DIM energy(2, 50), pbara(50), vafa(50, 7)
REM"******************************************************************"
cv = 718
REM"*******************************************************************"
'INPUT "number of sets os calculations"; ndset
'FOR nx = 1 TO ndset
'INPUT "cylinder diameter"; d
'INPUT " cylinder stroke "; s
'INPUT " compression ratio "; cr
'INPUT " air fuel ratio"; afr
'INPUT "precentage carbon by weight in fuel "; ca
'INPUT "precentage hydrogen by weight in fuel "; ha
'INPUT "heat of reaction in joule/kg"; qvs
'INPUT "pressure at commencement of compression stroke (k)"; pin
'INPUT "temperature at commencement of compression stroke (k)"; tin
'INPUT "refrence pressure example 10132n/m^2"; po
'INPUT "refrence temperature ex 288 k"; ts
'INPUT "working cycles per second ex 2000 rpm"; rev
'INPUT " number of volume divisions for compression and expansion stroke : not e
xceed 50"; nd
'INPUT "number of volume increments in expansion stroke at which mixture can be
considered to have frozen"; ndfst
'INPUT "accuracy for solution of equation 9.14 in white house book"; accur1

d = .08: s = .092: cr = 8: afr = 15: ca = .82: ha = .18


qvs = -4.788 * 10 ^ 9: pin = 100000
tin = 300: po = 10132: ts = 288: rev = 2000: nd = 50: ndfst = 50
accur1 = .01: accur2 = .01
'INPUT "accuracy for solution of equation 9.28 in white house book"; accur2
FOR ii = 1 TO 7
a(ii) = 0
b(ii) = 0
NEXT ii
REM coefficients
REM co2
u(1, 1)
u(1, 2)
u(1, 3)
u(1, 4)
u(1, 5)
u(1, 6)
u(1, 7)

=
=
=
=
=
=
=

3.0959
2.73114E-03
-7.88542E-07
8.66002E-11
0
6.5839
-3.9364E+08

1)
2)
3)
4)
5)
6)
7)

=
=
=
=
=
=
=

3.317
3.7697E-04
-3.2208E-08
-2.1945E-12
0
4.63284
-1.1395E+08

REM H2O
u(3, 1)
u(3, 2)
u(3, 3)
u(3, 4)
u(3, 5)
u(3, 6)
u(3, 7)

=
=
=
=
=
=
=

3.74292
5.6559E-04
4.9524E-08
-1.81802E-11
0
9.6514E-12
-2.39225E+08

REM H2
u(4, 1)
u(4, 2)
u(4, 3)
u(4, 4)
u(4, 5)
u(4, 6)
u(4, 7)

=
=
=
=
=
=
=

3.43328
-8.181E-06
9.6699E-08
-1.44392E-11
0
-3.8447
0

REM O2
u(5, 1)
u(5, 2)
u(5, 3)
u(5, 4)
u(5, 5)
u(5, 6)
u(5, 7)

=
=
=
=
=
=
=

3.25304
6.5235E-04
-1.49524E-07
1.53897E-11
0
5.71243
0

REM co
u(2,
u(2,
u(2,
u(2,
u(2,
u(2,
u(2,

REM N2
u(6,
u(6,
u(6,
u(6,
u(6,
u(6,
u(6,

1)
2)
3)
4)
5)
6)
7)

=
=
=
=
=
=
=

3.34435
2.9426E-04
1.953E-09
-6.5747E-12
0
3.75863
0

workt = 0
rmol = 8314.3
pi = 3.1415927#
REM set up input data
vs
vc
v1
nd
dv
p1
t1

=
=
=
=
=
=
=

pi *
vs /
vs +
nd vs /
pin
tin

s * (d / 2) ^ 2
cr
vc
1
ABS(nd)

REM calculate moles of fuel w


sox = ca + .25 * ha
wf = 12 * ca + ha
REM stoichometric air fuel ratio by weight
afst = 4.7619 * sox * 28.96 / wf
phi = afst / afr
wm1 = 1 + 4.76 * (ca + .25 * ha) / phi
w = (p1 * v1) / (wm1 * rmol * t1)
REM total moles (in Kmol)of O2,N2,CnHm at trapped condition
famol = phi / (4.7619 * sox)
afmol = 1 / famol
atmol = 1 / (1 + famol)
'PRINT "AFST,PHI"; afst, phi
REM convert heat of reaction from J/kg TO J/kgmol
qvs = qvs * wf
FOR i = 1 TO 4
b(i) = 0
NEXT i
b(5) = .21 * atmol * wm1
b(6) = .79 * atmol * wm1
b(7) = 1 / (afmol + 1) * wm1
p(1, 1) = p1
t(1, 1) = t1
v(1, 1) = v1
eo = 1
FOR ii = 1 TO 7
vaf(ii) = b(ii) / wm1 * 100

eo = eo + b(ii) * u(ii, 7)
vafa(1, ii) = vaf(ii)
NEXT ii
n = 1
pbar = p(1, 1) * 1 * 10 ^ -5
pbara(1) = pbar
nc = nd + 1
REM internal energy at trapped state for reactants
FOR i = 5 TO 7
GOSUB 500
NEXT i
GOSUB 600
et1 = rmol * t1 * fut
energy(1, 1) = et1
cv = rmol * fudtt / wm
REM start calculation for compression stroke
FOR n = 2 TO nc
REM estimate T@ , P2
v2 = v1 - dv
t2 = t1 * (v1 / v2) ^ (rmol / cv)
p2 = p1 * (v1 / v2) * (t2 / t1)
REM internal energy at state 2
13 FOR i = 5 TO 7
GOSUB 500
NEXT i
GOSUB 600
et2 = rmol * t2 * fut
cv = rmol * fudtt / wm
REM work
dw = .5 * (p2 + p1) * (v2 - v2)
REM first law
fe = w * (et2 - et1) + dw
eror = fe / (w * wm * cv)
IF ABS(eror) < accur1 THEN GOTO 12
REM if first law not satisfied estimate new
REM value of t2 and p2 and return to statment 12
t2 = t2 - eror
p2 = p1 * (v1 / v2) * (t2 / t1)
GOTO 13

REM first law satisfied


REM store values of pc , tc,dw and reset t1,p1.et1
12 t(1, n) = t2
p(1, n) = p2
v(1, n) = v2
energy(1, n) = et2
work(1, n) = dw
et1 = et2
t1 = t2
p1 = p2
v1 = v2
FOR ii = 1 TO 7
vaf(ii) = b(ii) / wm * 100
vafa(n, ii) = vaf(ii)
NEXT ii
workt = workt + dw
pbar = p(1, n) * 10 ^ -5
pbara(n) = pbar
NEXT n
REM end of COMPRESSION STROKE
tr = t2
pr = p2
bb = (2 / phi) * (ca + .25 * ha) - (ca + .5 * ha)
IF phi < 1 THEN t2 = tr + 2500 * phi
IF phi > 1 THEN t2 = tr + 2500 * phi - 700 * (phi - 1)
FOR i = 5 TO 7
fu(i) = 0
fudt(i) = 0
fv(i) = 0
FOR j = 1 TO 5
s = ABS(j)
fu(i) = fu(i) + u(i, j) * ts ^ (s - 1)
fudt(i) = fudt(i) + s * u(i, j) * ts ^ (s - 1)
IF o = 0 THEN GOTO 3
IF j = 1 THEN GOTO 3
fv(i) = fv(i) + (u(i, j) * ts ^ (s - 1)) / (s - 1)
3 NEXT j
NEXT i
futs = 0
fudts = 0
wm = 0
FOR i = 5 TO 7
futs = futs + b(i) * (fu(i) - 1)

fudts = fudts + b(i) * (fudt(i) - 1)


wmr = wmr + b(i)
NEXT i
FOR i = 5 TO 7
fu(i) = 0
fudt(i) = 0
fv(i) = 0
FOR j = 1 TO 5
s = ABS(j)
fu(i) = fu(i) + u(i, j) * tr ^ (s - 1)
fudt(i) = fudt(i) + s * u(i, j) * tr ^ (s - 1)
IF o = 0 THEN GOTO 2
IF j = 1 THEN GOTO 2
fv(i) = fv(i) + (u(i, j) * tr ^ (s - 1)) / (s - 1)
2 NEXT j
NEXT i
futr = 0
fudtr = 0
wm = 0
FOR i = 5 TO 7
futr = futr + b(i) * (fu(i) - 1)
fudtr = fudtr + b(i) * (fudt(i) - 1)
wm = wm + b(i)
NEXT i
e1 = rmol * tr * futr + eo
REM PRINT COMPRESSION STROKE
'******************************************************
'******************************************************
PRINT #6, "pressure"
FOR n = 1 TO nc
PRINT #6, pbara(n)
NEXT n

PRINT #6, "volum"


FOR n = 1 TO nc
PRINT #6, v(1, n)
NEXT n
REM products
REM spesific energy level and gibbs function
REM for each specis at t2 and equilibrium constants
60 FOR i = 1 TO 6
y = t2

mark = 1: y = t2
GOSUB 1000
fu(i) = f1: fudt(i) = f2: fv(i) = f3: t2 = y: mark = 1
NEXT i
alkp1 = (u(2, 1) + u(3, 1) - u(4, 1) - u(1, 1)) * (1 - LOG(t2)) - (fv(2) + fv(3)
- fv(4) - fv(1)) - (u(2, 6) + u(3, 6) - u(4, 6) - u(1, 6)) + 4.047E+07 / (rmol
* t2)
ekp1 = EXP(alkp1)
alkp2 = (u(2, 1) + .5 * u(5, 1) - u(1, 1)) * (1 - LOG(t2)) - (fv(2) + .5 * fv(5)
- fv(1)) - (u(2, 6) + .5 * u(5, 6) - u(1, 6)) + 2.7969E+08 / (rmol * t2)
ekp2 = EXP(alkp2)
d = w * rmol * t2 * (ekp2) ^ 2 / (po * v2)
c = 1 / ekp1 - 1
REM solve for a (symbol ae)
kp1 = ekp1
kp1 = ekp1: m = ha: n = ca
GOSUB 2000
ca = n: ha = m: phi = phi: ekp1 = kp1: d = d: ae = ae
REM set up constants mols in products
a(1) = ae
a(2) = ca - a(1)
a(5) = (a(1) / a(2)) ^ 2 / d
a(4) = a(1) + 2 * a(5) - bb
a(3) = .5 * ha - a(4)
a(6) = 3.76 * (ca + .25 * ha) / phi
REM solve for new values of t2 by energy balance
FOR i = 1 TO 6
y = ts: mark = 0
GOSUB 1000
fu(i) = f1: fudt(i) = f2: fv(i) = f3: ts = y: mark = 0
NEXT i
fudy(i) = fudt(i): x(i) = a(i)
fudy = fudt: x = a
GOSUB 6001
futs = f1: fudts = f2: wm = f3: i1 = 1: i2 = 6: a = x: fu = fu: fudt = fudy
FOR i = 1 TO 6
mark = 0: y = t2
GOSUB 1000
fu(i) = f1: fudt(i) = f2: fv(i) = f3: t2 = y: mark = 0
NEXT i
fudy(i) = fudt(i): x(i) = a(i)
fudy = fudt: x = a
GOSUB 6001
futp = f1: fudtp = f2: wm = f3: i1 = 1: i2 = 6: a = x: fu = fu: fudt = fudy
eo = 0
FOR i = 1 TO 6

eo = eo + a(i) * u(i, 7)
NEXT i
e2 = rmol * t2 * futp + eo
fe = e2 - e1
cv = rmol * fudtp / wm
eror = fe / (wm * cv)
er2 = eror
IF ABS(eror) < accur1 THEN GOTO 50
t2 = t2 - eror
GOTO 60
REM constsnts at end of combustion
50 p2 = (wm / wmr) * (t2 / tr) * pr
p(2, 1) = p2
t(2, 1) = t2
energy(2, 1) = e2
work(2, 1) = 0
FOR ii = 1 TO 6
vaf(ii) = a(ii) / wm * 100
NEXT ii
n = 1
pbar = p2 * .00001 / 3
PRINT #6, "pressure"
PRINT #6, pbar
PRINT #6, "volume"
PRINT #6, v2
REM "********expansion strok***********************"
FOR n = 2 TO nc
t1 = t2
p1 = p2
v1 = v2
v2 = v1 + dv
REM estimate t2 , p2
t2 = t18(v1 / v2) ^ (rmol / cv)
p2 = p1 * (v1 / v2) * (t2 / t1)
REM internal energy at state point 1
FOR i = 1 TO 6
mark = 0: y = t1
GOSUB 1000
fu(i) = f1: fudt(i) = f2: fv(i) = f3: t2 = y: mark = 0
NEXT i
fudy = fudt: x = a
GOSUB 6001
fut = f1: fudtt = f2: wm1 = f3: i1 = 1: i2 = 6: a = x: fu = fu: fudt = fudt
eo = 0
FOR i = 1 TO 6
eo = eo + a(i) * u(i, 7)
NEXT i
e1 = rmol * t1 * fut + eo
110 IF a(4) < accur2 THEN GOTO 170
IF phi < 1 AND n > nfrset THEN GOTO 170
FOR i = 1 TO 6
mark = 1: y = t2
GOSUB 1000
fu(i) = f1: fudt(i) = f2: fv(i) = f3: t2 = y: mark = 1
NEXT i

alkp1 = (u(2, 1) + u(3, 1) - u(4, 1) - u(1, 1)) * (1 - LOG(t2)) - (fv(2) + fv(3)


- fv(4) - fv(1)) - (u(2, 6) + u(3, 6) - u(4, 6) - u(1, 6)) + 4.047E+07 / (rmol
* t2)
ekp1 = EXP(alkp1)
alkp2 = (u(2, 1) + .5 * u(5, 1) - u(1, 1)) * (1 - LOG(t2)) - (fv(2) + .5 * fv(5)
- fv(1)) - (u(2, 6) + .5 * u(5, 6) - u(1, 6)) + 2.7969E+08 / (rmol * t2)
ekp2 = EXP(alkp2)
d = w * rmol * t2 * (ekp2) ^ 2 / (po * v2)
c = 1 / ekp1 - 1
kp1 = ekp1
kp1 = ekp1: m = ha: n = ca
GOSUB 2000
ca =
1162
a(1)
a(2)
a(5)
a(4)
a(3)
a(6)

n: ha = m: phi = phi: ekp1 = kp1: d = d: ae = ae


=
=
=
=
=
=

ae
ca - a(1)
(a(1) / a(2)) ^ 2 / d
a(1) + 2 * a(5) - bb
.5 * ha - a(4)
3.76 * (ca + .25 * ha) / phi

170
FOR i = 1 TO 6
mark = 0: y = t2
GOSUB 1000
fu(i) = f1: fudt(i) = f2: fv(i) = f3: t2 = y: mark = 0
NEXT i
fudy = fudt: x = a
GOSUB 6001
fut = f1: fudtt = f2: wm2 = f3: i1 = 1: i2 = 6: a = x: fu = fu: fudt = fudt
eo = 0
FOR i = 1 TO 6
eo = eo + a(i) * u(i, 7)
NEXT i
e2 = rmol * t2 * fut + eo
dw = .5 * (p1 + p2) * (v2 - v1)
de = (e2 - e1) * w
fe = (de + dw)
cv = rmol * fudtt / wm2
eror = fe / (w * wm2 * cv)
IF ABS(eror) < accur1 THEN GOTO 200
t2 = t2 - eror
p2 = p1 * (v1 / v2) * (wm2 / wm1) * (t2 / t1)
GOTO 110
200 p(2, n) = p2
t(2, n) = t2
v(2, n) = v2
energy(2, n) = e2
FOR ii = 1 TO 6
vaf(ii) = a(ii) / wm2 * 100
NEXT ii
work(2, n) = dw
work = work + dw
pbar = p(2, n) * .00001
PRINT #6, v(2, n)

PRINT #6, pbar


NEXT n
PRINT #6, "v3"
'FOR i = 1 TO n
'PRINT #6, v(2, n)
'NEXT i
END
1000
' fnu
f1 = 0
f2 = 0
f3 = 0
FOR j = 1 TO 5
s = ABS(j)
f1 = f1 + u(i, j) * y ^ (s - 1)
f2 = f2 + s * u(i, j) * y ^ (s - 1)
IF mark = 0 THEN GOTO 661
IF j = 1 THEN GOTO 661
f3 = f3 + (u(i, j) * y ^ (s - 1)) / (s - 1)
661 NEXT j
RETURN
6000
'fnut
f1 = 0
f2 = 0
f3 = 0
FOR i =
f1 = f1
f2 = f2
f3 = f3
NEXT i
RETURN
6001
'fnut
f1 = 0
f2 = 0
f3 = 0
FOR i =
f1 = f1
f2 = f2
f3 = f3
NEXT i
RETURN

i1 TO i2
+ x(i) * (fu(i) - 1)
+ x(i) * (fudy(i) - 1)
+ x(i)

i1 TO i2
+ a(i) * (fu(i) - 1)
+ a(i) * (fudt(i) - 1)
+ a(i)

2000
'calae
b = 2 * (n + .25 * m) / phi - (n + .5 * m)
992 c = 1 / kp1 - 1
993 coeff(1) = 2 * c
coeff(2) = 4 * c / d + m - 2 * b * c + 2 * n - 4 * c * n
coeff(3) = 2 * c * n ^ 2 - 4 * n ^ 2 + 4 * b * c * n - 3 * n * m + 4 * n / d - 2
* b * n

coeff(4) = 2 * n ^ 3 - 2 * b * c * n ^ 2 + 4 * b * n ^ 2 + 3 * m * n ^ 2
coeff(5) = -(2 * b + m) * n ^ 3
c = coeff: ar = areal: xi = aimag
GOSUB 2001
coeff = c: areal = xr: aimag = xi
ae = -1
FOR j = 1 TO 4
IF ABS(aimag(j)) <> 0 THEN GOTO 881
IF areal(j) < n AND areal(j) > 0 THEN GOTO 884
881 NEXT j
IF ae > 0 AND ae < 0 THEN RETURN
884 ae = areal(j)
RETURN
2001
a3 = coeff(2) / coeff(1)
a2 = coeff(3) / coeff(1)
a1 = coeff(4) / coeff(1)
ao = coeff(5) / coeff(1)
a = .5 * a3
ac(1) = 1
ac(2) = -1 * a2
ac(3) = a1 * a3 - 4 * ao
ac(4) = ao * (4 * a2 - a3 * a3) - a1 * a1
GOSUB 3002
ac = a: rt = xr: rti = xi
IF rti < 0 OR rti > 0 THEN GOTO 5
yu = rt(1) - rt(2)
IF yu = 0 OR yu > 0 THEN 80
rt(1) = rt(2)
80 yt = rt(1) - rt(3)
IF yt = 0 OR yt > 0 THEN 81
rt(1) = rt(3)
81 b = .5 * rt(1)
poo = b * b - ao
IF poo > 0 THEN 83
d = 0
ca = (a * a + 2 * b - a2) ^ .5
GOTO 84
83 d = (b * b - ao) ^ .5
ca = -(.5 * a1 - a * b) / d
84 aq(1) = 1
aq(2) = a - ca
aq(3) = b - d
GOSUB 3009
aq = a: areal(1) = xr1: areal(2) = xr2: aimag(1) = xi
bq(2) = a = ca
bq(3) = b + d
GOSUB 3009
bq = a: areal(3) = xr1: areal(4) = xr2: aimag(3) = xi

aimag(2) = -1 * aimag(1)
aimag(4) = -1 * aimag(3)
RETURN

500
fu(i) = 0
fudt(i) = 0
fv(i) = 0
FOR j = 1 TO 5
s = ABS(j)
fu(i) = fu(i) + u(i, j) * t1 ^ (s - 1)
fudt(i) = fudt(i) + s * u(i, j) * t1 ^ (s - 1)
IF o = 0 THEN GOTO 1
IF j = 1 THEN GOTO 1
fv(i) = fv(i) + (u(i, j) * t1 ^ (s - 1)) / (s - 1)
1 NEXT j
RETURN
600
fut = 0
fudtt = 0
wm = 0
FOR i = 5 TO 7
fut = fut + b(i) * (fu(i) - 1)
fudtt = fudtt + b(i) * (fudt(i) - 1)
wm = wm + b(i)
NEXT i
RETURN
3000
b = 2 * (n + .25 * m) / phi - (n + .5 * m)
5 c = 1 / kp1 - 1
6 coef(1) = 2 * c
coef(2)
coef(3)
* b * n
coef(4)
coef(5)

= 4 * c / d + m - 2 * b * c + 2 * n - 4 * c * n
= 2 * c * n ^ 2 - 4 * n ^ 2 + 4 * b * c * n - 3 * n * m + 4 * n / d - 2
= 2 * n ^ 3 - 2 * b * c * n ^ 2 + 4 * b * n ^ 2 + 3 * m * n ^ 2
= -(2 * b + m) * n ^ 3

'GOSUB 3001
ae = -1
FOR j = 1 TO 4
IF ABS(aimag(j)) <> 0 THEN GOTO 9

IF areal(j) < n AND real(j) > 0 THEN GOTO 4


9 NEXT j
IF ae > 0 AND ae < n THEN RETURN
4 ae = real(j)
RETURN

REM *******************************************
REM *******************************************
REM subprogram
3002
ipath = 2
ex = 1 / 3
IF a(4) < 0 OR a(4) < 0 THEN 112
xr(1) = 0
GOTO 1116
112 a2 = ac(1) * ac(1)
q = (27 * a2 * ac(4) - 9 * ac(1) * ac(2) * ac(3) + 2 * ac(2) ^ 3) / (54 * a2 * a
c(1))
IF q < 0 THEN 114
IF q = 0 THEN 113
IF q > 0 THEN 116
113 z = 0
GOTO 1115
114 q = -1 * q
ipath = 1
116 p = (3 * ac(1) * ac(3) - ac(2) * ac(2)) / (9 * a2)
arg = p ^ 3 + q ^ 2
IF arg < 0 THEN 117
IF arg = 0 THEN 118
IF arg > 0 THEN 119
'**************************************************************
117 z = -2 * (-1 * p) ^ .5 * COS(ATN((-1 * arg) ^ .5 / q) / 3)
'**************************************************************
GOTO 1113
118 z = -2 * q ^ ex
GOTO 1113
119 sarg = (arg) ^ .5
IF p = 0 THEN 1111
IF p > 0 THEN 1112
z = -1 * (q + sarg) ^ ex - (q - sarg) ^ ex
GOTO 1113
1111 z = -1 * (2 * q) ^ ex
GOTO 1113
1112 z = (sarg - q) ^ ex - (sarg + q) ^ ex
1113 IF ipath = 1 THEN GOTO 1114
IF ipath THEN GOTO 1115
1114 z = -1 * z
1115 xr(1) = (3 * ac(1) * z - ac(2)) / (3 * ac(1))
1116 aq(1) = ac(1)
aq(2) = ac(2) + xr(1) * ac(1)
aq(3) = ac(3) + xr(1) * aq(2)
xr2 = xr(3): xr1 = xr(2)

GOSUB 3009
aq = a: xr(2) = xr1: xr(3) = xr2: xi = xi
RETURN
3009
'********************************************************
'********************************************************
'sub program
x1 = -1 * aq(2) / (2 * aq(1))
disc = x1 * x1 - aq(3) / aq(1)
IF disc = 0 OR disc > 0 THEN GOTO 552
x2 = (-1 * disc) ^ .5
xr1 = x1
xr2 = x1
xi = x2
RETURN
552 x2 = (disc) ^ .5
xr1 = x1 + x2
xr2 = x1 - x2
xi = 0
RETURN

You might also like