Bitte nicht lachen...
Code: Alles auswählen
Global medium
Global medium_auswahl
Global M.f
Global p0.f
Global t0.f
Global pe.f
Global Mi.f
Global p0i.f
Global t0i.f
Global pei.f
Global ro1.f
Global Xcr.f
Global X.f
Global kappahilfswert.f
Global ng.f
Global Lw
Global kappa.f
Global ro.f
Global ng.f
Global G1.f
Global G2.f
Global Image0
Global Image1
Global Image2
Global Pmagnus.f
Procedure metric()
SetGadgetText(23, "kg/s")
SetGadgetText(24, "bar")
SetGadgetText(25, "°C")
SetGadgetText(26, "bar")
Mi.f=M*3600
p0i.f=p0
t0i.f=t0+274.15
pei.f=pe
EndProcedure
Procedure empiric()
SetGadgetText(23, "lb/hr")
SetGadgetText(24, "psi")
SetGadgetText(25, "°F")
SetGadgetText(26, "psi")
Mi.f=M*0.453592
p0i.f=p0*0.0689476
t0i.f=(5/9)*(t0-32)+273.15
pei.f=pe*0.0689476
EndProcedure
Procedure calc()
medium_auswahl = GetGadgetState(16)
M.f = ValF(GetGadgetText(7))
p0.f = ValF(GetGadgetText(8))
t0.f = ValF(GetGadgetText(9))
pe.f = ValF(GetGadgetText(10))
units= GetGadgetState(18)
If units = 1
metric()
Else
empiric()
EndIf
;------------ Valve Values
XT.f=0.7
G1.f=-3
G2.f=0.8
;------------ Gas Values
;- Air
If medium_auswahl = 0
ro.f=1.293
kappa.f=1.402
;- CO2
ElseIf medium_auswahl = 1
ro.f=1.965
kappa.f=1.289
;- He
ElseIf medium_auswahl = 2
ro.f=0.179
kappa.f=1.666
;- CH4
ElseIf medium_auswahl = 3
ro.f=0.716
kappa.f=1.319
;- N2
ElseIf medium_auswahl = 4
ro.f=1.251
kappa.f=1.400
;- O2
ElseIf medium_auswahl = 5
ro.f=1.429
kappa.f=1.400
;- H2O
ElseIf medium_auswahl = 6
ro.f=0.804
kappa.f=1.3
Pmagnus.f = (6.1*Pow(10,(((7.5*t0.f)/(t0.f+235.15)))))/1000
If p0i.f >= Pmagnus.f
liquid=1
Else
liquid=0
EndIf
;- H2SO3
ElseIf medium_auswahl = 6
ro.f=1.522
kappa.f=1.33
EndIf
ro1.f=ro.f*(p0i.f*273*1)/(1.013*t0i.f)
X.f=(p0i.f-pei.f)/p0i.f
Xcr.f=1-(Pow((2/(kappa.f+1)),((kappa.f/(kappa.f-1))*1.9*1*XT.f)))
Fx.f=1
kappahilfswert.f=Log((1-X.f))/(Log(1-Xcr.f))
ng.f=Pow(10,G1.f)*Pow(kappahilfswert.f,G2.f)
Lw=134.4+10*Log10(Mi.f)+10*Log10(kappa.f/(kappa.f+1))+10*Log10(p0i.f/ro1.f)+10*Log10((Log(1-X.f))/(Log(1-Xcr.f)))+10*Log10(ng.f)
If Lw<70
Lw$="###"
SetGadgetText(13, Lw$)
Else
Lw$=Str(Lw)
SetGadgetText(13, Lw$)
EndIf
If liquid=1
Lw$="###"
SetGadgetText(13, Lw$)
EndIf
If t0i.f>900
Lw$="###"
SetGadgetText(13, Lw$)
EndIf
EndProcedure
start:
Procedure main()
OpenWindow(1, 445, 100, 510, 220, #PB_Window_SystemMenu | #PB_Window_TitleBar , "Valve Noise Estimator 1.0 (for compressible fluids) ")
;#-If CreateMenu(0, WindowID())
;#---MenuTitle("Info...")
;#-MenuItem(30, "About...")
;#-EndIf
If CreateGadgetList(WindowID())
ImageGadget(1, 0, 0, 1, 1, Image0)
ImageGadget(35, 25, 43, 42, 81, Image2)
TextGadget(2, 441, 126, 29, 20, "dB(A)", #PB_Text_Center)
TextGadget(3, 30, 124, 100, 15, "valve inlet pressure", #PB_Text_Right)
TextGadget(4, 13, 150, 117, 15, "valve inlet temperature", #PB_Text_Right)
TextGadget(5, 23, 175, 106, 15, "valve outlet pressure", #PB_Text_Right)
TextGadget(6, 85, 100, 45, 15, "capacity", #PB_Text_Right)
StringGadget(7, 140, 95, 60, 20, "")
StringGadget(8, 140, 120, 60, 20, "")
StringGadget(9, 140, 145, 60, 20, "")
StringGadget(10, 140, 170, 60, 20, "")
;#---TextGadget(11, 103, 9, 370, 35, "Safety Valve Noise", #PB_Text_Center)
SetGadgetFont(12, FontID1)
TextGadget(13, 376, 121, 54, 20, "###", #PB_Text_Center | #PB_Text_Border)
;#---ButtonGadget(15, 130, 220, 305, 15, "www.vent-silencer.com", #PB_Text_Center)
ComboBoxGadget(16, 140, 65, 120, 200)
AddGadgetItem(16,-1,"Air (dry)")
AddGadgetItem(16,-1,"Carbondioxide [CO2]")
AddGadgetItem(16,-1,"Helium [He]")
AddGadgetItem(16,-1,"Methane [CH4]")
AddGadgetItem(16,-1,"Nitrogen [N2]")
AddGadgetItem(16,-1,"Oxigen [O2]")
AddGadgetItem(16,-1,"Steam [H2O]")
AddGadgetItem(16,-1,"Vapour [H2O]")
SetGadgetState(16,6)
medium_auswahl = GetGadgetState(16)
TextGadget(17, 89, 70, 41, 15, "medium", #PB_Text_Right)
OptionGadget(18, 279, 70, 21, 15, "")
SetGadgetState(18,1)
OptionGadget(19, 370, 70, 15, 15, "")
TextGadget(20, 299, 70, 72, 15, "metric units")
TextGadget(21, 390, 70, 88, 15, "english units")
TextGadget(22, 259, 125, 103, 15, "sound power level", #PB_Text_Right)
TextGadget(23, 204, 100, 36, 15, "kg/s")
TextGadget(24, 206, 124, 36, 15, "bar")
TextGadget(25, 207, 150, 36, 15, "°C")
TextGadget(26, 208, 175, 36, 15, "bar")
;# ButtonImageGadget(30, 460, 185, 25, 25, UseImage(1))
Frame3DGadget(28, 255, 100, 250, 63, "")
EndIf
EndProcedure
main()
Procedure about()
OpenWindow(2, 398, 258, 490, 400, #PB_Window_TitleBar , "About...")
If CreateGadgetList(WindowID())
TextGadget(31, 165, 25, 160, 15, "Valve Noise Estimator 1.0", #PB_Text_Center | #PB_Font_Bold )
ListViewGadget(30, 30, 65, 435, 255)
AddGadgetItem (30,-1," ")
AddGadgetItem (30,-1," copyright GLAUNACH GMBH 2006")
ButtonGadget(32, 215, 340, 65, 35, "OK")
EndIf
Repeat
EventID = WaitWindowEvent()
WindowID = EventWindowID()
Select EventGadgetID()
Case 32
CloseWindow(2)
Goto start
EndSelect
Until WaitWindowEvent()=#PB_Event_CloseWindow
EndProcedure
Procedure run()
Repeat
EventID = WaitWindowEvent()
WindowID = EventWindowID()
Select EventGadgetID()
Case 7
calc()
Case 8
calc()
Case 9
calc()
Case 10
calc()
Case 16
calc()
Case 18
calc()
Case 19
calc()
Case 14
calc()
Case 30
about()
EndSelect
Until WaitWindowEvent()=#PB_Event_CloseWindow
End
EndProcedure
run()