gtengine 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Readme.md +45 -2
- data/lib/gtengine/simple/burner.rb +13 -6
- data/lib/gtengine/simple/compressor.rb +5 -12
- data/lib/gtengine/simple/pik_optimizer.rb +11 -14
- data/lib/gtengine/simple/turbine.rb +5 -12
- data/lib/gtengine/simple_cycle.rb +7 -3
- data/lib/gtengine/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 63698ae2d1f94f7ac92937dc0d0219aab3eaa77b
|
4
|
+
data.tar.gz: b26b469da2e306d1d8563b9744f531e9ed513a52
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1d2c9805c67d1de50113b1154b33966d4d054278ebd590e69a0ee02f7d33caf965e5fbae8b0bb063d95366899ba9d05e33cd67815bc062ebe7319737e71bd2de
|
7
|
+
data.tar.gz: 30d3b7e15818c2f0432fd6e029cd296ecc8ca1228a24a38ad5e961241d8114223e7fa178a002720a8584df9ac915231b4e00719222e8ce3caaaad4abc8f8effb
|
data/Readme.md
CHANGED
@@ -1,10 +1,53 @@
|
|
1
|
+
# GTEngine
|
1
2
|
[![Build Status](https://travis-ci.org/arrowcircle/engine.png?branch=master)](https://travis-ci.org/arrowcircle/engine)
|
2
3
|
[![Code Climate](https://codeclimate.com/github/arrowcircle/engine.png)](https://codeclimate.com/github/arrowcircle/engine)
|
3
4
|
|
4
|
-
# GTEngine
|
5
|
-
|
6
5
|
Math models of gas turbine engine and its parts made with ruby language
|
7
6
|
|
7
|
+
## Usage
|
8
|
+
|
9
|
+
### Simple
|
10
|
+
|
11
|
+
For simple parts calculation:
|
12
|
+
|
13
|
+
require_relative 'lib/gtengine'
|
14
|
+
gas = Gtengine::Gas.new 300, 101325
|
15
|
+
|
16
|
+
k = Gtengine::Simple::Compressor.new gas, 4.5, 0.85
|
17
|
+
b = Gtengine::Simple::Burner.new k.output, 1500
|
18
|
+
t = Gtengine::Simple::Turbine.new b, k.l_k, 0.9
|
19
|
+
|
20
|
+
k.info; b.info; t.info
|
21
|
+
|
22
|
+
To play with cycle (compressor -> burner -> turbine)
|
23
|
+
|
24
|
+
require_relative 'lib/gtengine'
|
25
|
+
gas = Gtengine::Gas.new 300, 101325
|
26
|
+
|
27
|
+
c = Gtengine::Simple::Cycle.new gas, 20, 1500.0
|
28
|
+
|
29
|
+
c.compressor.info; c.burner.info; c.turbine.info; c.info
|
30
|
+
|
31
|
+
To play with pi_k optimization
|
32
|
+
|
33
|
+
require_relative 'lib/gtengine'
|
34
|
+
gas = Gtengine::Gas.new 300, 101325
|
35
|
+
|
36
|
+
opt = Gtengine::Simple::PikOptimizer.new gas, 3, 40, 1500, 1
|
37
|
+
opt.info
|
38
|
+
|
39
|
+
Cycle research with T_g and pik
|
40
|
+
|
41
|
+
require_relative 'lib/gtengine'
|
42
|
+
gas = Gtengine::Gas.new 300, 101325
|
43
|
+
|
44
|
+
res = {}
|
45
|
+
[900, 1000, 1100, 1200, 1300, 1400, 1500].each do |t_g|
|
46
|
+
opt = Gtengine::Simple::PikOptimizer.new(gas, 3, 40, t_g, 1)
|
47
|
+
res[t_g.to_s] = opt.optimal.pi_k
|
48
|
+
end
|
49
|
+
puts res
|
50
|
+
|
8
51
|
## Requirements
|
9
52
|
|
10
53
|
* Ruby 2.0.0 or newer
|
@@ -8,9 +8,7 @@ class Gtengine::Simple::Burner
|
|
8
8
|
L0 = 14.7
|
9
9
|
|
10
10
|
def initialize input, t_g
|
11
|
-
@input = input
|
12
|
-
@t_g = t_g
|
13
|
-
@output = Gtengine::Gas.new(t_g, @input.p, @input.alfa)
|
11
|
+
@input, @t_g = input, t_g
|
14
12
|
cycle
|
15
13
|
end
|
16
14
|
|
@@ -26,6 +24,10 @@ class Gtengine::Simple::Burner
|
|
26
24
|
@input.t
|
27
25
|
end
|
28
26
|
|
27
|
+
def p_vh
|
28
|
+
@input.p
|
29
|
+
end
|
30
|
+
|
29
31
|
def q_ks
|
30
32
|
(cp_vyh * t_g - cp_vh * t_vh - (cp_vyh - cp_vh) * T0) / (QN * ETA_G - (cp_vyh * t_g - cp_mult_t_0))
|
31
33
|
end
|
@@ -43,8 +45,13 @@ class Gtengine::Simple::Burner
|
|
43
45
|
end
|
44
46
|
|
45
47
|
def cycle
|
46
|
-
|
47
|
-
|
48
|
-
|
48
|
+
@output = Gtengine::Gas.new(t_g, p_vh, input.alfa)
|
49
|
+
5.times { @output.alfa = alfa }
|
50
|
+
end
|
51
|
+
|
52
|
+
def info
|
53
|
+
puts "== Burner q_ks: #{q_ks}, ALFA: #{alfa}"
|
54
|
+
puts "==== Вход T: #{@input.t.to_i} K, P: #{@input.p.to_i} Па"
|
55
|
+
puts "==== Выход T: #{@output.t.to_i} K, P: #{@output.p.to_i} Па\n\n"
|
49
56
|
end
|
50
57
|
end
|
@@ -2,10 +2,7 @@ class Gtengine::Simple::Compressor
|
|
2
2
|
attr_accessor :input, :output, :g, :pi_k, :kpd, :average
|
3
3
|
|
4
4
|
def initialize input, pi_k, kpd
|
5
|
-
@input = input
|
6
|
-
@pi_k = pi_k.to_f
|
7
|
-
@kpd = kpd.to_f
|
8
|
-
@average = Gtengine::Gas.new input.t.to_f, input.p.to_f
|
5
|
+
@input, @pi_k, @kpd = input, pi_k.to_f, kpd.to_f
|
9
6
|
cycle
|
10
7
|
end
|
11
8
|
|
@@ -47,19 +44,15 @@ class Gtengine::Simple::Compressor
|
|
47
44
|
end
|
48
45
|
|
49
46
|
def cycle
|
50
|
-
|
51
|
-
|
52
|
-
end
|
47
|
+
@average = Gtengine::Gas.new input.t.to_f, input.p.to_f
|
48
|
+
5.times { update_average }
|
53
49
|
@output = Gtengine::Gas.new t_vyh, p_vyh
|
54
50
|
end
|
55
51
|
|
56
52
|
def info
|
57
|
-
puts "== Compressor"
|
58
|
-
puts "==== Pi_k: #{@pi_k}, КДП: #{@kpd}"
|
53
|
+
puts "== Compressor Pi_k: #{@pi_k}, КДП: #{@kpd}, Cp_sr: #{cp}, K: #{k}"
|
59
54
|
puts "==== Вход T: #{@input.t.to_i} K, P: #{@input.p.to_i} Па"
|
60
|
-
puts "
|
61
|
-
puts "==== Выход T: #{@output.t.to_i} K, P: #{@output.p.to_i} Па, ALFA: #{alfa}"
|
62
|
-
puts
|
55
|
+
puts "==== Выход T: #{@output.t.to_i} K, P: #{@output.p.to_i} Па, ALFA: #{alfa}\n\n"
|
63
56
|
end
|
64
57
|
|
65
58
|
end
|
@@ -2,23 +2,22 @@ class Gtengine::Simple::PikOptimizer
|
|
2
2
|
attr_accessor :start_pik, :end_pik, :t_g, :step, :optimum, :cycles, :air
|
3
3
|
|
4
4
|
def initialize air, start_pik, end_pik, t_g, step=1
|
5
|
-
@air = air
|
6
|
-
@start_pik = start_pik
|
7
|
-
@end_pik = end_pik
|
8
|
-
@t_g = t_g
|
9
|
-
@step = step
|
5
|
+
@air, @start_pik, @end_pik, @t_g, @step = air, start_pik, end_pik, t_g, step
|
10
6
|
optimize
|
11
7
|
end
|
12
8
|
|
13
9
|
def optimize
|
14
10
|
@cycles = []
|
15
11
|
Range.new(start_pik, end_pik).step(step).each do |pik|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
12
|
+
calc_result(pik)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def calc_result(pik)
|
17
|
+
begin
|
18
|
+
c = Gtengine::Simple::Cycle.new(air, pik, t_g)
|
19
|
+
@cycles << c if c.burner.q_ks
|
20
|
+
rescue
|
22
21
|
end
|
23
22
|
end
|
24
23
|
|
@@ -27,9 +26,7 @@ class Gtengine::Simple::PikOptimizer
|
|
27
26
|
end
|
28
27
|
|
29
28
|
def info
|
30
|
-
@cycles.each
|
31
|
-
puts "pi_k: #{c.pi_k}, q_ks: #{c.q_ks}"
|
32
|
-
end
|
29
|
+
@cycles.each { |c| c.info }
|
33
30
|
puts "Optimal pi_k: #{optimal.pi_k}, q_ks: #{optimal.q_ks}"
|
34
31
|
end
|
35
32
|
end
|
@@ -7,10 +7,7 @@ class Gtengine::Simple::Turbine
|
|
7
7
|
G_OHL = 0.001
|
8
8
|
|
9
9
|
def initialize burner, l_k, kpd = 0.9
|
10
|
-
@burner = burner
|
11
|
-
@l_k = l_k
|
12
|
-
@kpd = kpd.to_f
|
13
|
-
@average = Gtengine::Gas.new t_vh, p_vh
|
10
|
+
@burner, @l_k, @kpd = burner, l_k, kpd.to_f
|
14
11
|
cycle
|
15
12
|
end
|
16
13
|
|
@@ -34,9 +31,8 @@ class Gtengine::Simple::Turbine
|
|
34
31
|
end
|
35
32
|
|
36
33
|
def cycle
|
37
|
-
|
38
|
-
|
39
|
-
end
|
34
|
+
@average = Gtengine::Gas.new t_vh, p_vh
|
35
|
+
5.times { update_average }
|
40
36
|
@output = Gtengine::Gas.new t_vyh, p_vyh
|
41
37
|
end
|
42
38
|
|
@@ -66,12 +62,9 @@ class Gtengine::Simple::Turbine
|
|
66
62
|
end
|
67
63
|
|
68
64
|
def info
|
69
|
-
puts "== Turbine"
|
70
|
-
puts "==== Pi_t: #{pi_t}, КДП: #{ETA}"
|
65
|
+
puts "== Turbine Cp_sr: #{cp}, K: #{k}, Pi_t: #{pi_t}, КДП: #{ETA}"
|
71
66
|
puts "==== Вход T: #{t_vh.to_i} K, P: #{p_vh.to_i} Па, ALFA: #{input.alfa}, Cp: #{input.cp}"
|
72
|
-
puts "
|
73
|
-
puts "==== Выход T: #{@output.t.to_i} K, P: #{@output.p.to_i} Па, , Cp: #{@output.cp}"
|
74
|
-
puts
|
67
|
+
puts "==== Выход T: #{@output.t.to_i} K, P: #{@output.p.to_i} Па, , Cp: #{@output.cp}\n\n"
|
75
68
|
end
|
76
69
|
|
77
70
|
end
|
@@ -10,10 +10,15 @@ module Gtengine
|
|
10
10
|
|
11
11
|
def initialize air=Gas.new(300, 101325), pi_k, t_g
|
12
12
|
@air = air
|
13
|
+
@t_g = t_g
|
13
14
|
@pi_k = pi_k
|
15
|
+
init_cycle
|
16
|
+
end
|
17
|
+
|
18
|
+
def init_cycle
|
14
19
|
@compressor = Compressor.new air, pi_k, 0.85
|
15
20
|
@burner = Burner.new @compressor.output, t_g
|
16
|
-
@turbine = Turbine.new
|
21
|
+
@turbine = Turbine.new burner, compressor.l_k, 0.9
|
17
22
|
end
|
18
23
|
|
19
24
|
def q_ks
|
@@ -21,8 +26,7 @@ module Gtengine
|
|
21
26
|
end
|
22
27
|
|
23
28
|
def info
|
24
|
-
puts "== Cycle info"
|
25
|
-
puts "pi_k: #{@compressor.pi_k}, q_ks: #{q_ks}"
|
29
|
+
puts "== Cycle info: pi_k: #{@compressor.pi_k}, q_ks: #{q_ks}"
|
26
30
|
end
|
27
31
|
end
|
28
32
|
end
|
data/lib/gtengine/version.rb
CHANGED