Older Version Newer Version

cogburn cogburn May 23, 2012

Gas Law Solver

Should be useful to chemistry teachers.

 'GAS LAW problem solver 
' purpose is to solve gas law problems including Dalton's law of partial pressure
'4/12/2010
nomainwin

VP = 0
[begin]
WindowWidth = 560
WindowHeight = 520

groupbox #cfg, "Boyle's Law", 240, 20, 200, 140
radiobutton #cfg.bP2, "Solve for Pressure 2", [BoylesLawUKP2], [waitHere], 260, 45, 130, 20
radiobutton #cfg.bP1, "Solve for Pressure 1", [BoylesLawUKP1], [waitHere], 260, 70, 130, 20
radiobutton #cfg.bV2, "Solve for Volume 2", [BoylesLawUKV2], [waitHere], 260, 95, 130, 20
radiobutton #cfg.bV1, "Solve for Volume I", [BoylesLawUKV1], [waitHere], 260, 120, 130, 20

groupbox #cfg, "Charles' Law", 20, 20, 200, 140
radiobutton #cfg.cv2, "Solve for Volume 2", [CharlesLawUKV2], [waitHere], 40, 45, 130, 20
radiobutton #cfg.ct2, "Solve for Temperature 2", [CharlesLawUKT2], [waitHere], 40, 70, 130, 20
radiobutton #cfg.cv1, "Solve for Volume 1", [CharlesLawUKV1], [waitHere], 40, 95, 130, 20
radiobutton #cfg.ct1, "Solve for Temperature 1", [CharlesLawUKT1], [waitHere], 40, 120, 130, 20

button #cfg, " &Quit ", [quit], UL, 450, 30
button #cfg, " Water " , [Dalton], UL, 30,450
Statictext #cfg.static, "Click Here if gas was collected by water displacement. ",120,460, 600,20

groupbox #cfg, "Gay-Lussac Law", 20, 240, 200, 140
radiobutton #cfg.Boyles, "Solve for Pressure 2", [GayLawUKP2], [waitHere], 40, 265, 130, 20
radiobutton #cfg.Char1es, "Solve for Temperature 2", [GayLawUKT2], [waitHere], 40, 290, 130, 20
radiobutton #cfg.Gay, "Solve for Pressure 1", [GayLawUKP1], [waitHere], 40, 315, 130, 20
radiobutton #cfg.Combined, "Solve for Temperature 1", [GayLawUKT1], [waitHere], 40, 340, 130, 20

groupbox #cfg, "Combined Gas Law", 240, 240, 200, 160
radiobutton #cfg.bP2, "Solve for Pressure 2", [CGLUKP2], [waitHere], 260, 255, 130, 20
radiobutton #cfg.bP1, "Solve for Pressure 1", [CGLUKP1], [waitHere], 260, 280, 130, 20
radiobutton #cfg.bV2, "Solve for Volume 2", [CGLUKV2], [waitHere], 260, 305, 130, 20
radiobutton #cfg.bV1, "Solve for Volume 1", [CGLUKV1], [waitHere], 260, 330, 130, 20
radiobutton #cfg.T2, "Solve for Temperature 2", [CGLUKT2], [waitHere], 260, 355, 130, 20
radiobutton #cfg.T1, "Solve Temperature 1", [CGLUKT1], [waitHere], 260, 380, 130, 20

open "Gas Law Solver" for dialog as #cfg
print #cfg, "trapclose [quit]"

[waitHere]
wait

[BoylesLawUKV2]
prompt "pressure 1"; P1
PI = PI -VP
prompt "volume l";V1
prompt "pressure 2"; P2
V2=(P1*V1)/P2
notice "V2 ="; V2
wait

[BoylesLawUKP2]
prompt "pressure 1"; P1
P1= P1 -VP
prompt "volume 1"; V1
prompt "volume 2";V2
P2=(P1*V1)/V2
notice "P2 ="; P2
wait

[BoylesLawUKV1]
prompt "pressure 1" ; P1
P1 = P1 -VP
prompt "volume 2";V2
prompt "pressure 2"; P2
V1=(P2*V2)/P1
notice "V1=";V1
wait

[BoylesLawUKP1]
prompt "volume l";V1
prompt "volume 2";V2
prompt "pres sure 2"; P2
P1=(P2*V2)/V1
notice "P1=" ; P1
wait

[CharlesLawUKT1]
prompt "Temperature 2 in Celsius";T2
prompt "volume l";V1
prompt "Volume 2";V2
T2 = T2 + 273
T1=(T2*V1)/V2
notice "T1=";T1;" Kelvin"
wait

[CharlesLawUKT2]
prompt "Temperature 1 in Celsius";T1
prompt "volume 1";V1
prompt "Volume 2";V2
T1 = T1 + 273
T2=(T1*V2)/V1
notice "T2=" ; T2
wait

[CharlesLawUKV1]
prompt "Temperature 1 in Celsius";T1
prompt "volume 2";V2
prompt "Temperature 2 in Celsius";T2
T1 = T1 + 273
T2 = T2 + 273
V1=(T1*V2)/T2
notice "V1="; V1
wait

[CharlesLawUKV2]
prompt "Temperature 1 in Celsius" ;T1
prompt "volume 1"; V1
prompt "Temperature 2";T2
T1= T1 + 273
T2 = T2 + 273
V2=(T2*V1)/T1
notice "V2=";V2
wait

[CGLUKT1]
prompt "Pressure 1= "; P1
P1 = P1 -VP
prompt "Volume 1= ";V1
prompt "Temperature 2 (in Celsius) = ";T2
prompt "Pressure 2= "; P2
prompt "Volume 2= ";V2
T2 = T2 + 273
T1 = (P1*V1*T2)/(P2*V2)
notice "T1 = ";T1; " Kelvin"
wait


[CGLUKP2]
prompt "Pressure 1= "; P1
P1 = P1 -VP
prompt "Volume 1= ";V1
prompt "Temperature 2 (in Celsius) = ";T2
prompt "Temperature 1= ";T1
prompt "Volume 2= ";V2
T2 = T2 + 273
T1 = T1 + 273
P2 = (P1*V1*T2)/(T1*V2)
notice "P2 = "; P2
wait

[CGLUKT2]
prompt "Pressure 1= "; PI
P1 = PI -VP
prompt "Volume 1= ";V1
prompt "Temperature 1 (in Celsius) = ";T1
prompt "Pressure 2= "; P2
prompt "Volume 2= ";V2
Tl = T1 + 273
T2 = (P2*V2*Tl)/(P1*V1)
notice "T2 = ";T2; " Kelvin"
wait

[CGLUKVl]
prompt "Pressure 1= " ;P1
P1 = PI -VP
prompt "Temperature 1= ";T1
prompt "Temperature 2 (in Celsius) = ";T2
prompt "Pressure 2= " ;P2
prompt "Volume 2= ";V2
T1 = T1 + 273
T2 = T2 + 273
V1 = (P2*V2*T1)/(P1*T2)
notice "V1 = " ;V1
wait

[CGLUKV2]
prompt "Pressure 1= "; P1
P1 = P1 -VP
prompt "Volume 1= ";V1
prompt "Temperature 1 (in Celsius) = ";T1
prompt "Pressure 2= "; P2
prompt "Temperature 2 in (Celsius) = ";T2
T1 = T1 + 273
T2 = T2 + 273
V2 = (P1*V1*T2)/(P2*T1)
notice "V2 = ";V2
wait

[CGLUKP1]
prompt "Temperature 2= "; T2
prompt "Volume 1= ";V1
prompt "Temperature 1 (in Celsius) = ";T1
prompt "Pressure 2= "; P2
prompt "Volume 2= ";V2
T2 = T2 + 273
T1 = T1 + 273
P1 = (P2*V2*T1)/(T2*V1)
notice "P1 = ";P1
wait

[GayLawUKP2]
prompt "Temperature 1 (in Celsius) = ";T1
prompt "Temperature 2 (in Celsius) = ";T2
prompt "Pressure 1= "; P1
P1 = P1 -VP
T2 = T2 + 273
T1 = T1 + 273
P2 = (P1*T2)/T1
notice "P2 = "; P2
wait

[GayLawUKP1]
prompt "Temperature 1 (in Celsius) = ";T1
prompt "Temperature 2 (in Celsius) = ";T2
prompt "Pressure 2= "; P2
T2 = T2 + 273
T1 = T1 + 273
P1 = (T1*P2)/T2
notice "P1 = "; P1
wait

[GayLawUKT2]
prompt "Temperature 1 (in Celsius) = ";T1
prompt "Pressure 1 = ";P1
P1 = P1 -VP
prompt "Pressure 2= "; P2
T1 = T1 + 273
T2 = (T1*P2)/P1
notice "T2 = "; T2
wait

[GayLawUKT1]
prompt "Temperature 2= "; P1
prompt "Volume 1= "; V1
prompt "Temperature 1 (in Celsius) = ";T1
prompt "Pressure 2= "; P2
prompt "Volume 2= ";V2
T2 = T2 + 273
T1 = T1 + 273
P1 = (P2*V2*T1)/(P1*V1)
notice "P1 = "; P1
wait

[Dalton]
prompt "Celsius Temperature ";C
VP= 4.553 + .3335*C + .01108 *C^2 + .0001826 * C^3 + 2.337e-6 * C^4 + 1.948e-8 * C^5
notice "H2O Partial Pressure is "; VP ; " mmHg"
wait

[quit]
close #cfg
end