Professional Documents
Culture Documents
PIP MOD VALVE Analitico CyS PDF
PIP MOD VALVE Analitico CyS PDF
Janssen, W.T.G.M.
Gepubliceerd: 01/01/1987
Document Version
Uitgevers PDF, ook bekend als Version of Record
• A submitted manuscript is the author's version of the article upon submission and before peer-review. There can be important differences
between the submitted version and the official published version of record. People interested in the research are advised to contact the
author for the final version of the publication, or visit the DOI to the publisher's website.
• The final author version and the galley proof are versions of the publication after peer review.
• The final published version features the final layout of the paper including the volume, issue and page numbers.
Link to publication
General rights
Copyright and moral rights for the publications made accessible in the public portal are retained by the authors and/or other copyright owners
and it is a condition of accessing publications that users recognise and abide by the legal requirements associated with these rights.
• Users may download and print one copy of any publication from the public portal for the purpose of private study or research.
• You may not further distribute the material or use it for any profit-making activity or commercial gain
• You may freely distribute the URL identifying the publication in the public portal ?
Take down policy
If you believe that this document breaches copyright please contact us providing details, and we will remove access to the work immediately
and investigate your claim.
W. JANSSEN
WINDENERGIE GROEP
Technische Universiteit Eindhoven
Faculteit der Technische Natuurkunde
Vakgroep Transportfysica
Postbus 513
5600 MB Eindhoven
Samenvatting
Inhoudsopgave
bIz.
Samenvatting 1
Inhoudsopgave 2
syrnbolenlijst 3
1 Inleiding 4
2 Theorie 6
2.1 De zuigerpomp 6
2.2 De differentiaalvergelijking 7
2.3 De oplossingsmethode van de differentiaalvergelijking 10
2.4 De beginvoorwaarden 12
3 Resultaten 14
4 Conclusies en suggesties 17
5 Literatuurlijst 19
Appendix 21
-tabellen en figuren 21
-opzet van het programma 32
-toelichting bij het programma 34
-listing van het programma 40
3
Symbolenlijst
a ems - 2] versnelling
A [m 2 ] oppervlakte
Av [m 2 ] effectieve oppervlakte (zie tekst)
C ins t [-] instationaire kracht coefficient
D em] diameter
F inst [N] instationaire kracht
F stat [N] stationaire kracht
[ms- 2]
g zwaartekrachtsversnelling
h em] hoogte
11 [ms- i ] snelheid
h ems - 2 ] versnelling
m [kg] massa
t [s] tijd
u [ms- 1 ] snelheid
V ems - 1] snelheid
3 volume
V [m ]
z ems - 1] snelheid
a. [-] verhouding klepoppervlak en zitting inlaat-
oppervlak
a [s] tijd
top CPa] drukverschil
J,L [-] contractiecoefficient
p [kgm- 3] dichtheid
indices
f voet (foot)
g spleet (gap)
p zuiger (piston)
v klep (valve)
w water
4
1 Inleiding
2 Theorie
2.1 De zuigerpomp
POO1lstang
k_-----r-aansh 9
pompcylMer
~L ICL~L ....J~r-zitting
Het onderste dode punt definieren we als 0°. Het bovenste dode
punt is dan 180°. Als de zuiger vanuit het ODP naar boven beweegt
zal even later de zuigerklep sluiten en de voetklep openen. Ook
de voetklep zal niet precies bij 180° sluiten maar iets later. We
willen deze nasluithoeken weten omdat ze grote schokkrachten in
de pompstang tot gevolg hebben. Om deze schokkrachten te kunnen
minimaliseren is kennis van de beweging van de kleppen
onontbeerlijk.
2.2 De differentiaalvergelijkingen
(2.1)
8
Hierin is de eerste term van het rechter lid het gewicht van de
klep, de tweede term de opwaartse kracht, de derde en vierde term
hydrodynamische krachten die later behandeld worden.
Massabehoud:
(2.2)
(2.3)
122
~p = '2
hoi (v g-V p) (2.5)
2
Voor kleine hoogtes van de klep verwaarlozen we v p ten opzichte
2-
van v g •
De stationaire weerstandskracht voor de voetklep kan nu als voIgt
geschreven worden:
'/( 2 2
PwAv Dp Dv
[ 4D vh v
'/(
(2.8)
Deze tweede orde d.v. kunnen we nu schrijven als een stelsel van
twee eerste orde d.v. IS:
(2.13)
(2.14)
- -
h n +1 = h n + -
~*un
u n + 1 = un + ~*F(tn,hn,un) (2.15 )
en als correctorvergelijkingen:
h n+1 = h n + O.5*~*(un + u n+ 1 )
u n + 1 = un + O.5*~*(F(tn,hn,un)
- -
+ F(tn+l,hn+l,un+l» (2.16)
2.4 Beginvoorwaarden
(2.2)
Neem nu aan dat bij het opengaan van de klep in eerste instantie
de tweede term verwaarloosbaar is. nit betekent dat er geen
stroming Iangs de klep is. Voor de snelheid op het moment van
openen vinden we dan:
(2.17)
(2.18)
3 Resuitaten
4 conclusies en suqqesties
5 Literatuur
Appendix
Tabellen en figuren
slag 0.08 m
zuigerdiameter 0.14 m
maximum hoogte zuigerklep 0.006 m
maximum hoogte voetklep 0.006 m
dichtheid zuigerklep 8400 kg m- 3; messing
dichtheid voetklep 3780 kg m- 3 ; messing met rubber
diameter zuigerklep 0.12 m
diameter voetklep 0.12 m
diameter gat in zuigerklep: 0.018 m
diameter gat in voetklep 0.022 m
dikte zuigerklep 0.004 '.· m
dikte voetklep 0.014 m
inlaatoppervlak zitting · 0.00263 m2
C inst /J. 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
0 0.8 39.5 37.0 36.8 36.7 37.2 37.5 37.7 37.9 38.1
71'/12 0.8 38.4 36.2 36.1 36.3 36.5 36.7 36.9 37.0 37.2
0 f(D,h) 37.2 37.1 37.4 37.6 38.0 38.2 38.5 38.7 38.9
71'/12 f(D,h) 36.9 36.7 37.3 37.6 38.0 38.3 38.3 38.7 38.8
C inst /.L 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
0 0.8 216.7 216.3 217.8 220.5 221.2 222.2 223.7 224.1 223.9
11'/12 0.8 215.8 215.5 216.8 218.3 219.7 220.5 221.0 221. 4 221. 4
0 f(D,h) 216.1 217.1 219.0 220.7 221.1 221.5 222.0 222.1 222.2
11'/12 f(D,h) 216.0 216.9 218.7 219.7 220.7 221.0 221.1 221. 2 221. 3
C ins t /.L 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
0 0.8 155.9 164.2 168.2 170.6 172.2 173.3 174.1 174.8 175.3
11'/12 0.8 154.0 161.4 1'64.7 166.5 167.6 168.2 168.7 169.0 169.3
0 f(D,h) 167.2 171.5 173.7 174.9 175.8 176.4 176.8 177.2 177.5
11'/12 f(D,h) 166.2 170.0 171.8 172.7 173.3 173.6 173.9 174.1 174.2
C ins t /.L 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
0 0.8 337.3 343.7 346.5 348.0 348.9 349.5 349.9 350.2 350.4
11'/12 0.8 335.4 341.1 343.5 344.7 345.4 345.8 346.1 346.3 346.4
0 f(D,h) 347.9 351.2 352.7 353.5 354.0 354.3 354.5 354.7 354.8
71'/12 f(d,h) 346.8 349.8 351.1 351. 7 352.1 352.3 352.4 352.6 352.6
C inst l.L 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
0 0.8 192.6 199.4 203.9 208.5 210.4 212.3 213.3 213.8 213.6
71/12 0.8 192.0 198.9 202.8 205.6 207.9 209.1 209.9 210.4 210.4
0 f(D,h) 198.7 202.6 206.3 209.0 209.8 210.4 211.1 211.4 211.5
71/12 f(D,h) 198.7 202.6 206.1 207.8 209.3 209.9 210.0 210.2 210.3
C ins t l.L 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
0 0.8 15.2 18.3 20.3 21.1 22.5 23.2 23.7 24.2 24.5
71/12 0.8 14.5 17.9 ~9.8 21.1 21.9 22.5 22.9 23.3 23.5
0 f(D,h) 19.2 21. 6 23.0 23.7 24.6 25.1 25.6 26.0 26.3
71'/12 f(D,h) 18.9 21.7 23.1 24.1 24.8 25.5 25.5 26.2 26.4
hoogte
(mm)
5 -
4 - voetklep zuigerklep
3 -
2 -
1 -
sluithoek openin~shoek
o openJngsnoek I I ,
3~O sluithoek
90 1&0 210 krukhoek
(graden)
fig. 3.1 hoogte van de kleAJen
IV
U1
Cinst= 'TT' /12
)A- =f(O,hl
30mw/s
360
270 krukhoek
(graden)
zui gerklep
27
~0.8
205
200
voefklep
195
190
185
180
,.a=flO,h)
__----""1 (inst=1T112
25
"u=0.8
_---"1 (ins t=ftl12
20
15 zuigerklep
10
o 1 2 3 4 5
omw/s
fig. 3.3 sl uithoek van de kleppen
28
215
krukroek metingen
(graden)
~ =0.8
210 ---~ Cinst=71'112
= 0.8
(inst='l1/12
SNOE I J
205
200
195 voetklep
190
185
180 1-----+----+-----+-----+-----+-------1
)-t =0.8
25 (inst=O
.t-< =0.8
metingen _---J - - - - , (ins t =17'112
i4=0.8
(inst=W12
20
SNOEIJ
15
10 zuigl!f'idep
o 4 5
2 3 omw/s
tig.3.4 sluithoek van de kleppen
29
(inst =T1'/12
krukhoek
(gradenl fL =f( D1h)
sluithoek zUigerlrtep
360
270
18~
9-0
_ _ _ _ _ _ _ _- - - - - - - - - aanslaghoek voetklep
~_---------------Openingshoek voetkl~=
---- s\uithoek zuigerklep
o
1 2 3 4 s omw/s
o m/s
150
o m/s
0.1 mls
100
0.1 m/s
50
om/s
o mls
o 1 2 3 4 5 6 hoogte
(mm)
fig. 3.6 kromrnes waarbij Ftotaal=O tegen de klephoogte met de
klepsnelheid als parameter.
31
~~'----~ 0 m/s
330
om/s
0.1 m/s
280
0.15m/s
0.1 m/s
230
Om/s
~-~O m/s
0.0234 m/s
0.01 m/s
1 2 3 4 5 6 hoogte
(mml
fig. 3.7 krommes waarbij Ftotaal=Q tegen de klephoogte met de
klepsnelheid als parameter.
32
cx:::stcrthoek
hoogte::O
gebruik zuigersnel.heid
bepaal aanslaghoek
bepaal loslaathoek
konstanten
g=9.8 mj s 2 : zwaartekrachtsversnelling
rhoW=1000 kgjm 3 : soortelijke massa van water
variabelen
procedures en funkties
-function mU(D,h)
D: diameter van de klep
h: hoogte van de klep
De funktie berekent de contractiecoefficient u volgens de
formules van Lindner (zie (2.7».
-function Fstat(logical,A,D,h,dh,v)
logical: indien 'waar' dan voetklep anders zuigerklep
A: oppervlakte van de klep
D: diameter van de klep
h: hoogte van de klep
dh: snelheid van de klep
v: snelheid van de zuiger
De funktie berekent de stationaire kracht op de klep volgens de
formules (2.6) of (2.7).
-function Madded(D)
D: diameter van de klep
De funktie berekent de toegevoegde massa als gevolg van de
instationaire kracht.
-function TotalForce(logical,A,V,O,M,alfa,h,dh)
logical: indien 'waar' dan voetklep anders zuigerklep
A: oppervlakte van de klep
V: volume van de klep
D: diameter van de klep
M: massa van de klep
alfa: hoek van de krukas
h: hoogte van de klep
dh: snelheid van de klep
De funktie berekent de totale kracht op de klep zoals aangegeven
in vergelijking 2.1 en 2.3 •
36
-function conver(logical,A,V,D,M,alfa,h,dh,ac)
logical: 'waar l voor voetklep anders 'onwaar'
A: oppervlakte van de klep
V: volume van de klep
D: diameter van de klep
M: massa van de klep
alfa: hoek van de krukas
h: hoogte van de klep
dh: snelheid van de klep
ac: versnelling van de klep
De funktie test of de iteratieprocedure zal convergeren. Dit
gebeurt zoals in de theorie aangegeven door de afgeleide te
berekenen. In de praktijk doen we dit zoals beneden beschreven.
uit vergelijking 2.16 voIgt: dh/dt n + 1 = f(dh/dt n + 1 )
De afgeleide van f naar dh/dt in een bepaald punt dh/dt=a
bepalen we nu als volgt: o
-procedure iteration(logical,A,V,D,M,alfa,h,dh,ac,rel)
logical: 'waar' voor voetklep anders 'onwaar'
A: oppervlakte van de klep
V: volume van de klep
D: diameter van de klep
M: massa van de klep
alfa: hoek van de krukas
h: hoogte van de klep; uitvoer: hoogte voor alfa+l
dh: snelheid van de klep; uitvoer: snelheid voor alfa+l
ac: versnelling van de klep
reI: relatieve fout waarbij de iteratie gestopt wordt
De procedure berekent de hoogte en de snelheid van de klep in
het volgende punt zoals beschreven in de theorie.
37
-procedure interpolation(alfa,xl,x2,val)
alfa: krukhoek waarbij hoogte xl hoort
xl: hoogte van de klep
x2: hoogte van de klep
val: hoogte waarbij de krukhoek moet worden berekent
De funktie berekent met interpolatie tussen xl en x2 de krukhoek
waarbij de hoogte van de klep gelijk is aan val.
-function release(logical,A,V,D,M,hm)
logical: 'waar' voor voetklep, 'onwaar' voor zuigerklep
A: opppervlakte van de klep
V: volume van de klep
D: diameter van de klep
M: massa van de klep
hm: maximale lichthoogte
De funktie berekent met staphalveren voor welke hoek de totale
kracht op een klep gelijk is aan nul als de klep zich op hoogte
hm bevindt.
-procedure fillarray(il,i2,hm,H,Z)
il: arrayindex
i2: arrayindex
hm: maximale lichthoogte
H: array met hoogtes van de klep
Z: array met snelheden van de klep
De procedure vult de array's H en Z tussen de aanslaghoek en de
loslaathoek.
-procedure valveaspiston(logical,alfa,h,dh,Hl,Z)
logical: 'waar' voor voetklep 'onwaar' voor zuigerklep
alfa: hoek van de krukas
h: hoogte van de klep; uitvoer: hoogte van de klep voor alfa+l
dh: snelheid van de klep; uitvoer: snelheid van de klep voor
alfa+l
Hl: array met hoogtes van de klep
Z: array met snelheden van de klep
38
-procedure valvebyforce(logical,A,V,D,M,alfa,h,dh,ac,HI,Z)
logical: 'waara voor voetklep anders 'onwaar'
A: oppervlak van de klep
V: volume van de klep
D: diameter van de klep
M: massa van de klep
alfa: hoek van de krukas
h: hoogte van de klep; uitvoer: hoogte van de klep voor alfa+1
dh: snelheid van de klep; uitvoer: snelheid van de klep voor
alfa+1
ac: versnelling van de klep
HI: array met hoogtes van de klep
Z: array met snelheden van de klep
De procedure berekent de hoogte en de snelheid van de klep voor
hoek alfa+1 door de d.v. op te lossen. Ook worden bijbehorende
arrayelementen van HI en Z gevuld.
-procedure valve(logical,ao,aa,ar,ac,A,V,D,M,angle,hm,H,Z)
logical: 'waara voor voetklep, 'onwaar' voor zuigerklep
ao: bevat na einde van de procedure de openingshoek
aa: bevat na einde van de procedure de aanslaghoek
ar: bevat na einde van de procedure de loslaathoek
ac: bevat na einde van de procedure de sluithoek
A: oppervlak van de klep
V: volume van de klep
D: diameter van de klep
M: massa van de klep
angle: starthoek van de procedure (schatting openingshoek)
hm: maximale lichthoogte
H: array met hoogtes van de klep
z: array met snelheden van de klep
De procedure berekent de beweging van een klep en vult de
39
-procedure fvmotion
De procedure roept de procedure valve aan met de argumenten voor
de voetklep.
-procedure pvmotion
De procedure roept de procedure valve aan met de argumenten voor
de zuigerklep.
-procedure existingconfig
De procedure leest een pompconfiguratie van disk in het
programma.
-procedure newconfig
De procedure maakt het mogelijk een nieuwe pompconfiguratie te
creeren.
-procedure saveconfig
De procedure schrijft een pompconfiguratie naar disk.
-procedure DefineAndlnitialize
De procedure definieert en initialiseert de variabelen van het
programma.
-procedure runprogram
De procedure voert de eigenlijke berekening uit. Voor een
toelichting hierop wordt verwezen naar de opzet van het
programma.
-procedure choice
De procedure geeft het menu waaruit de gewenste aktie gekozen
kan worden.
program valvemotion;
const g=9.8; ( function that determines whether the iteration procedure conver,es or
rhoW=lOOO; function conver(lo,ical:boolean;A,V,D,H,alfa,h,dh,ac'real)'boolean;
type realarray=array[O .. 360) of real; var h1,h2,dhl,dh2,dh3,delta,TF:realj
characteristica=strin,(35)i begin
var aofv,aafv,arfv,acfv,aopv,aapv,arpv,acpv,R,omela.Areap,alfaatart,laat, if h>O then
begin
hmfv.hmpv,Hpv,Hfv,Dfv,Dpv,Vpv,Vfv,Apv,Afv,DT,Cinat,sia:rea1;
count: integer; dh1::dh+DT*ac;
Hfv,Zfv,Hpv, Zpv: realarraYi hl::h+O.5*DT*(dh+dhl);
pumpconfiguration:array[1 .. 13) of characteristicsj if hl>O then
parar:array[l .. 13J of real; begin
FOOT'boolean; TF::TotalForce(10gical,A,V,D,H,alfa+1BO*DT*omega/pi,h1,dhl);
dh2::dh+O.5*DT*(ac+TF/(H+Hadded(D»);
function arccos(x'real) 'real; h2::h+O.5*DT*(dh+dh2);
be,in if h2>O then
arccos:=arctan(sqrt(1-sqr(x»/x)*180/pi begin
end; TF,=TotalForce(logical,A,V,D,H,alfa+lBO*DT*omega/pi,h2,dh2)i
dhl:=dh+O.5*DT*Cac+TF/(H+Hadded(D»);
{ contractioncoefficient by Lindner } delta,=O.5*TF*DT;
function mu(D,h'real):realj dh2::dh2+delta;
var ratio'real; {ratio:valve openin, areal seat inlet area} h2:=h+O.5*DT*(dh+dh2+delta);
be,in if h2>O then
ratio'=pi*D*h/sia; begin
if ratio<O.3 then mu::O.5*exp(-O.2*ln(ratio» TF:=TotalForce(lo,ical,A,V,D,M,alfa+lBO*DT*omega/pi,h2,dh2);
else mu::O.41*exp(-O.36*ln(ratio» dh3::dh+O.5*DT*(ac+TF/(H+HaddedCD»);
end; if abs«dh3-dhl)/delta)<1 then conver:=true
else conver:=false
{ stationary force } end
function Fstat(logical:booleanjA.D,h,dh,v:real):real; else conver::false
var dummy: real; end
be,in else conver::false
if 10lical then dummy:=Areap*v-A*dh {footvalve} end
else dummy:=-Areap*v-A*dhj {pistonvalve} else conver::false
Fstat,=A*rhoW*dummy*abs(dummy)/(2*sqr(mu(D,h»*pi*pi*D*D*h)/h end
end; else oonver::false
endj
{ added mass due to instationary force }
function Hadded(D:real):realj ( iteration prooedure to solve the differential equation
be,in procedure iteration(logica1:booleanjA,V,D,H,alfa:real;
Hadded::Cinst*rhoW*D*D*D var h,dh:real;ac,rel:real);
end; var dhl,hl,h2,TF,C2,hoogte,hulp,der:real;
N,eps:inte,erj
{ total force In the valve } be,in
function TotaIForce(lo,ical:booleaniA,V,D,H,alfa,h,dh:real):rea1; N:=O;
var vp,ap,dummy:real; h2:=Oj
be,in dhl::dh+DT*ao; {predictor}
vp:=oae,a*R*ain(alfa*pi/180)j {piston apeed} hl:=h+DT*dhj
ap::oae,a*ome,a*R*cos(alfa*pi/180); {piaton acceleration} while (N<20) and (abs«hl-h2)/hl»rel) and (abs«hl-h2)/h1)<=l) do
dUMmy::(rhoW*V-H)*.+Fstat(lo.ical,A,D,h,dh,vp); begin
if logical then TotalForce:=dummy+Hadded(D)*ap {footvalve} h2::h1j
else TotalForce:=dummy-H*ap-Hadded(D)*ap {piatonvalve} h1:=h+O.5*DT*(dh+dh1); {corrector)
end; begin
if hl>O then
be.in procedure fillarray(il,i2:integer;hm:real;var H,Z:realarray);
TF:=TotalForce(logical,A,V,D,H,alfa+lBO*DT*omega/pi,hl,dhl); var t:int.eger;
dhl:=dh+O.5*DT*(ac+TF/(H+Hadded(D»); be.in
N:=N+l for t:=il to i2 do
end begin
end H[tJ:=hm;
end; Z[tJ: =0
i f N=20 then end
be«in end;
writeln(' too many iterations; an.le: ',alfa);
writeln(' height and relative error: ',hl,abs«hl-h2)/hl» { calculation of speed in next point by using pistonspeed }
end; procedure valveaspiston(lo.ical:boolean;var alfa,h,dh:real;
if abs«hl-h2)/hl»l then h:=h2 else h:=h1; var 81,Z:realarray);
dh: =dhl; var 1: inte.er;
end; begin
1:=round(alfa+180*DT*omega/pi);
{ determination of attach- or closureangle } i f 1>360 then
function interpolation(alfa,x1,x2,val:real):reali begin
var rc: real j 1:=1-360;
begin H1[OJ: =81[360J;
rc:=(x2-xl)*pi/(l80*DT*omega); Z[OJ:=Z[360Jj
if rc<>O then interpolation:=alfa+(val-x2)/rc alfa:=alfa-360
else interpolation:=alfa end;
end; h:=h+DT*dh;
if logical then dh:=omega*R*sin(alfa*pi/lBO+DT*omega)*Areap/Afv
{ determination of releaseangle } else dh:=-ome.a*R*sin(alfa*pi/160+DT*omega)*Areap/Apv;
function release(logical:boolean;A,V,D,H,hm:real):real; Z[IJ:=dh;
var ar1,ar2,ar3,fl,f2,f3:real; 81[1J: =h;
begin end;
if lo.ical then ar2:=90 {startangle for footvalve}
else ar2:=270; {atartangle for piatonvalve} { calculation of speed in next point by solvin, the diff. equation}
f2:=TotalForce(lo.ical,A,V,D,H,ar2,hm,O)j procedure valvebyforce(logical:boolean;A,V,D,H:real;
f1:=f2; var alfa,h,dh:real;ac:real;var 81,Z:realarray);
while «f1>0) and (f2>0» or «f1<0) and (f2<0» do var 1: inte.er;
be.in beain
ar1:=ar2j I:=round(alfa+l80*DT*omega/pi);
f1:=f2; i f 1>360 then
ar~: ~'llr2+10; begin
f2:=TotalForce(10,ical,A,V,D,H,ar2,hm,O) 1:=1-360;
end; 81[OJ: =H1[360J;
while «ar2-arl)/ar1»1.0E-10 do Z[OJ:=Z[360];
be.in alfa:=alfa-360
ar3:=(ar2-ar1)/2+ar1; end;
f3:=TotaIForce(lo,ical,A,V,D,H,ar3,hm,O); iteration(lo.ical,A,V,D,H,alfa,h,dh,ac,l.OI-3);
i£ «£3>0) and (£1>0» or «f3<0) and (f1<0» then be.in Z[IJ: =dh;
n:=f3j 81[IJ:=h;
ar1:=ar3 end;
end
else begin { calculation of movement of valve }
£2:=£3; procedure valve(lo.ical:boolean;var aO,aa,ar,ac:real;A,V,D,H,
ar2:=ar3 an.le,hm:real;var H,Z:realarray);
end var il,i2:integer;
end; speed,hei.ht,alfa,acc:real;
release:=ar2
end;
Oelln
acc:=O; { reading existing pumpconfiguration from disk }
alfa:=angle; procedure existingconfig:
il: =round (alfa) ; var filename:string(6);
height: =0; filvar:text;
if logical then speed:=omega*R*sin(alfa*pi/180)*Areap/Afv {footvalve} I: integer;
else speed:=-omega*R*.in(.l+a~pi/~80)~Are.P/~pv;(pi$ton~.lv.} begin
Z(il): =speed; Clrscr;
while (he1ght>=0) and (heisht<=hm) do writeln;writeln;
begin write('Name of file with pumpconfiguration: ');
last:=height; readln(filename):
1f height<>O then writeln:
acc:=TotalForce(logical,A,V,D,H,alfa,height,speed)/(H+Hadded(D»j assign(filvar,filename);
if conver(logical,A,V,D,H,alfa,height,speed,acc) reset(filvar) ;
then valvebyforce(logical,A,V,D,H,alfa,height,speed,acc,H,Z) ~or I:~l to l~ do readln(filvar,parar[I);
else valveaspiston(logical,alfa,height,speed,H,Z): for 1:=1 to 13 do writeln(pumpconfigurationfIJ,pat".. r[l);
alfa:=alfa+180*DT*omega/pi clo!lfl(fllvar) ;
end; writeln:writeln;
if height>hm then writeln('Hit any key to continue');
begin repeat until KeyPressed
11: =round(alfa); end:
aa:=interpolation(alfa,last,height,hm)j
ar:=release(logical,A,V,D,H,hm); { making new pumpconfiguration }
i2: =round( ar); procedure newconfig;
fillarray(il,i2,hm,H,Z): var 1 dnteger:
heillht:=hm: begin
speed: =0: Clrscr;
acc:=O: writeln:writeln;
alfa:=ar; for 1::1 to 13 do
while (height>=O) and (height<=hm) do begin
begin write(pumpconfiguration(I):
last:=heillht: readln(parar[I)
acc:=TotalForce(lollical,A,V,D,H,alfa,height,speed)/(H+Hadded(D»: end;
if conver(lollical,A,V,D,H,alfa,height,speed,acc) . writeln;writeln;
then valvebyforce(logical,A,V,D,H,alfa,height,speed,acc,H,Z) writeln(' Hit any key to continue'):
else valveaspiston(logical,alfa,heillht,speed,H,Z)j repeat until KeyPressed
alfa::alfa+180*DT*omega/pi end;
end;
end: { saving pumpconfiguration on disk }
11: =round(alfa); procedure saveconfig;
ac: =interpolation(alfa, last,heillht,O) var filename:strinll(6);
end; filvar:text;
I:integer:
procedure fvmotion; belin
var FOOT: boolean: Clrscr:
bellin writeln:writeln;
FOOT:=true; write('Name of configuration (6 char.): ');
alfastart::aofv; readln(filename)j
valve(FOOT,aofv,aafv, arfv, acfv,Afv, Vfv, Dfv,Hfv, alfastart, hafv,Hfv,Zfv) assign(filvar,filename);
end; rewrite(filvar) ;
for 1:=1 to 13 do writeln(filvar,parar[I]);
procedure pvmotion: close(filvar)
var FOOT: boolean; end:
bellin
FQOT:=falsej { definition and initialisation of parameters
alfastart:=aopv; procedure DefineAndlnitialize;
valve(FOOT,aopv,aapv,arpv,acpv,Apv,Vpv,Dpv,Hpv,alfastart,hmpv,Hpv,Zpv) var I: inte«er;
end; rhopv,rhofv,Dhpv,Dhfv,tpv,tfv:real;
wri teln ( lilt) ;
writeln(lst,'revs/s: ',revsps);
writeln(lst, 'Cinat: ',Cinat);
be.in wri teln ( lilt) ;
R:=parar[l]l2: writeln(lat,'footvalve: ');
Areap:=parar(2)*parar[2)*pi/4i writeln(lst,'openingan,le: ',aofv,' attackan,le: ',aafv);
hIIlpv:=parar[3); writeln(lat,'releaaean,le: ',arfv,' cloaurean,le: ',acfv);
hmfv: =parar[ 4]; wri telnClst);
rhopv: =parar [ 5) : writeln(lat,'piatonvalve: '};
rhofv: =parar (6) ; writeln(lat,'openin.an,le: ',aopv,' attackan.le: ',aapv);
Dpv: =parar[?] i writeln(l~t, 'releasean.le: ',arpv,' cloaure4fislc: ',acpv);
Dfv: =parar[8J; until (aba(aofv-acpv)/aofv<1.0E-6) or (1=5);
Dhpv: =parar[9]; wri te ( , A.ain for different speed or Cinst (y /n) ?'.') j
Dhfv: =parar[10] i readln(ch)
tpv: =parar[l1]; end
tfv: =parar[12]: end;
sia:=parar[13];
Afv:=aqr(Dfv)*pi/4-aqr(Dhfv)*pi/4; { menu with options }
Apv:=aqr(Opv)*pi/4-sqr(Dhpv)*pi/4; procedure choice;
Vfv:=Afv*tfv: var QUIT:boolean;
Vpv: =Apv*tpv; ch: inte.er;
Hfv:=Vfv*rhofv: belin ., .
Hpv:=Vpv*rhopv
end;
pumpconfiguration[l]:=' stroke
pumpconfiguration(2):=' pistondiameter ...
, ,
· ,
pumpconfiguration[3]:=' maximum height pistonvalve ...
·
{ running pro.ram for calculating valvemovement } pumpconfiguration[4]:=' maximum hei,ht footvalve .,
· .,,
procedure runpro.ram: pumpconfiguration[5]:=' density pistonvalve · ..,
.,
.,
var 1, J: inte.er: pumpconfiguration[6]:=' density footvalve ·., ,,.
revaps:real: pumpconfiguration[7]:=' diameter piatonvalve ·
ch:char; pumpconfiguration[6):=' diameter footvalve ·., .,.
.,
· .,, .
....
be.in pumpconfiguration(9):=' diameter hole in piatonvalve
Clrscr:
DefineAnd1nitialize;
pumpconfiguration[10):=' diameter hole in footvalve
pumpconfiguration(11):=' thickness pistonvalve
·:' ;
for 1:=1 to 13 do writeln(lat,pumpconfi,uration[1),parar[I]); pumpconfiguration[12):=' thickness footvalve ·.' ,.
writeln(lat);writeln(lst);
ch:='y' ;
pumpconfiauration[13):=' seat inlet area
QUIT:=false;
· ,
while <ch='y') or (ch='Y') do while QUIT=false do
be,in belin
write('Give the number of revolutions per second: '); Clrscr;
readln ( revsps) ; wrltelnjwriteln;writeln;
write('Give Cinstationary: '); wr1tell1(' 1: use all existin, pumpconfiauratlon');
readln( Cinst); writeln(' 2: make a new pumpconfigwcation');
acpv:=2*arccoa(1-hmpv!R)/3; wr1~~ln(' 3: aave the pumpconfisuration');
0 • • •a:=2*pi*revsps; writeln(' 4: run the prosram');
DT:=1/(revsps*360)i writeln(' 5: quit');
1:=0; writeln;writeln;
repeat repeat
1:=1+1; write('Hake your choice: ');
for J:=O to 360 do readln(ch)
bedn until (ch>=1) and (ch<=5);
Hfv[J]:=O caae ch of
Hpv[J):=O 1: existin,confi,;
Zfv[J):=O 2: n.woonfi.;
Zpv[J]: =0 3: aaveconfi,;
end; 4: runpro,ram;
aatv: =0; 5: QUIT: =true
arty: =0; end
aofv:=acpv; end
fWlotion; end;
aapv:=O;
arpv: =0;
aopv: =acfv; bea:in
pWlotion; choice
end.