pub struct System { /* private fields */ }
Implementations§
Source§impl System
impl System
pub fn new( objs_info: Vec<ObjectInfo>, engine: Option<Engine>, zero_dim: Vec<Box<dyn ZeroD>>, one_dim: Vec<Box<dyn OneD>>, connector: Vec<Box<dyn Conn>>, ) -> Result<System, String>
Sourcepub fn advance<'a>(&'a mut self, dt: f64) -> &'a mut Self
pub fn advance<'a>(&'a mut self, dt: f64) -> &'a mut Self
Advance all objects in System by dt
. The state of the objects is stored.
Sourcepub fn advance_to_steady_state<'a>(&'a mut self) -> &'a mut Self
pub fn advance_to_steady_state<'a>(&'a mut self) -> &'a mut Self
Advance all objects in System until steady state or until a max number of iterations/cycles is reached. All the stored data of objects are reseted
Examples found in repository?
examples/Ryobi_26_engine.rs (line 33)
4fn main() {
5
6 let gas = Gas::new("air.json");
7 let gas_intake = Gas::new("air.json");
8 let mut gas_exhaust = Gas::new("air.json");
9 gas_exhaust.TPX(500.0, 101325.0, "N2:0.662586, H2O:0.202449, CO2:0.134965");
10
11 let mut builder = lmb::SystemBuilder::new();
12 builder.add_engine("engine_Ryobi.json", &gas)
13 .add_environment("ambient", &gas)
14 .add_reservoir("int_plenum", 250.0, &gas_intake)
15 .add_reservoir("int_port", 2.04, &gas_intake)
16 .add_reservoir("exh_port", 2.04, &gas_exhaust)
17 .add_reservoir("exh_plenum_1", 95.0, &gas_exhaust)
18 .add_reservoir("exh_plenum_2", 158.0, &gas_exhaust)
19 .add_orifice("int_plenum -> amb 1", 9.5, 0.92, vec!["ambient", "int_plenum"])
20 .add_orifice("int_plenum -> amb 2", 9.5, 0.92, vec!["ambient", "int_plenum"])
21 .add_orifice("int_plenum -> int_port", 6.5, 0.78, vec!["int_plenum", "int_port"])
22 .add_orifice("exh_plenum_2 -> amb", 8.9, 0.78, vec!["exh_plenum_2", "ambient"])
23 .add_orifice("exh_plenum_1 -> exh_plenum_2", 12.7, 0.78, vec!["exh_plenum_1", "exh_plenum_2"])
24 .add_orifice("exh_port -> exh_plenum_1", 10.8, 0.78, vec!["exh_port", "exh_plenum_1"])
25 .connect_from_to("valve_int", "int_port")
26 .connect_from_to("valve_exh", "exh_port");
27
28 let mut system = builder.build_system();
29
30 // Calculating
31 for speed in vec![5000.0, 5500.0, 6000.0, 6500.0, 7000.0, 7500.0, 8000.0, 8500.0, 9000.0] {
32 system.engine_mut().unwrap().set_speed(speed);
33 system.advance_to_steady_state();
34
35 // Writting data
36 let folder_name = format!("./Ryobi_26_results/{:.0}_", speed);
37 system.write_to_file( &(folder_name.clone() + "cylinder.txt"), "cyl_1", None);
38 system.write_to_file(&(folder_name.clone() + "int_plenum.txt"), "int_plenum", None);
39 system.write_to_file(&(folder_name.clone() + "int_port.txt"), "int_port", None);
40 system.write_to_file(&(folder_name.clone() + "exh_port.txt"), "exh_port", None);
41 system.write_to_file(&(folder_name.clone() + "exh_plenum_1.txt"), "exh_plenum_1", None);
42 system.write_to_file(&(folder_name.clone() + "exh_plenum_2.txt"), "exh_plenum_2", None);
43 system.write_to_file(&(folder_name.clone() + "int_valve.txt"), "valve_int", None);
44 system.write_to_file(&(folder_name.clone() + "exh_valve.txt"), "valve_exh", None);
45 }
46
47 system.engine().unwrap().write_performance_to("./Ryobi_26_results/engine_performance.txt");
48
49}
Sourcepub fn write_to_file(
&self,
file_name: &str,
obj_name: &str,
_range: Option<(usize, usize)>,
)
pub fn write_to_file( &self, file_name: &str, obj_name: &str, _range: Option<(usize, usize)>, )
Write the stored data from a object, obj_name
, into a file file_name
.
If Engine
has been added, only the data stored in the last cycle will be written as default.
_range
can be used to set the first and last index of the writable data.
Examples found in repository?
examples/Ryobi_26_engine.rs (line 37)
4fn main() {
5
6 let gas = Gas::new("air.json");
7 let gas_intake = Gas::new("air.json");
8 let mut gas_exhaust = Gas::new("air.json");
9 gas_exhaust.TPX(500.0, 101325.0, "N2:0.662586, H2O:0.202449, CO2:0.134965");
10
11 let mut builder = lmb::SystemBuilder::new();
12 builder.add_engine("engine_Ryobi.json", &gas)
13 .add_environment("ambient", &gas)
14 .add_reservoir("int_plenum", 250.0, &gas_intake)
15 .add_reservoir("int_port", 2.04, &gas_intake)
16 .add_reservoir("exh_port", 2.04, &gas_exhaust)
17 .add_reservoir("exh_plenum_1", 95.0, &gas_exhaust)
18 .add_reservoir("exh_plenum_2", 158.0, &gas_exhaust)
19 .add_orifice("int_plenum -> amb 1", 9.5, 0.92, vec!["ambient", "int_plenum"])
20 .add_orifice("int_plenum -> amb 2", 9.5, 0.92, vec!["ambient", "int_plenum"])
21 .add_orifice("int_plenum -> int_port", 6.5, 0.78, vec!["int_plenum", "int_port"])
22 .add_orifice("exh_plenum_2 -> amb", 8.9, 0.78, vec!["exh_plenum_2", "ambient"])
23 .add_orifice("exh_plenum_1 -> exh_plenum_2", 12.7, 0.78, vec!["exh_plenum_1", "exh_plenum_2"])
24 .add_orifice("exh_port -> exh_plenum_1", 10.8, 0.78, vec!["exh_port", "exh_plenum_1"])
25 .connect_from_to("valve_int", "int_port")
26 .connect_from_to("valve_exh", "exh_port");
27
28 let mut system = builder.build_system();
29
30 // Calculating
31 for speed in vec![5000.0, 5500.0, 6000.0, 6500.0, 7000.0, 7500.0, 8000.0, 8500.0, 9000.0] {
32 system.engine_mut().unwrap().set_speed(speed);
33 system.advance_to_steady_state();
34
35 // Writting data
36 let folder_name = format!("./Ryobi_26_results/{:.0}_", speed);
37 system.write_to_file( &(folder_name.clone() + "cylinder.txt"), "cyl_1", None);
38 system.write_to_file(&(folder_name.clone() + "int_plenum.txt"), "int_plenum", None);
39 system.write_to_file(&(folder_name.clone() + "int_port.txt"), "int_port", None);
40 system.write_to_file(&(folder_name.clone() + "exh_port.txt"), "exh_port", None);
41 system.write_to_file(&(folder_name.clone() + "exh_plenum_1.txt"), "exh_plenum_1", None);
42 system.write_to_file(&(folder_name.clone() + "exh_plenum_2.txt"), "exh_plenum_2", None);
43 system.write_to_file(&(folder_name.clone() + "int_valve.txt"), "valve_int", None);
44 system.write_to_file(&(folder_name.clone() + "exh_valve.txt"), "valve_exh", None);
45 }
46
47 system.engine().unwrap().write_performance_to("./Ryobi_26_results/engine_performance.txt");
48
49}
Sourcepub fn engine<'a>(&'a self) -> Option<&'a Engine>
pub fn engine<'a>(&'a self) -> Option<&'a Engine>
Examples found in repository?
examples/Ryobi_26_engine.rs (line 47)
4fn main() {
5
6 let gas = Gas::new("air.json");
7 let gas_intake = Gas::new("air.json");
8 let mut gas_exhaust = Gas::new("air.json");
9 gas_exhaust.TPX(500.0, 101325.0, "N2:0.662586, H2O:0.202449, CO2:0.134965");
10
11 let mut builder = lmb::SystemBuilder::new();
12 builder.add_engine("engine_Ryobi.json", &gas)
13 .add_environment("ambient", &gas)
14 .add_reservoir("int_plenum", 250.0, &gas_intake)
15 .add_reservoir("int_port", 2.04, &gas_intake)
16 .add_reservoir("exh_port", 2.04, &gas_exhaust)
17 .add_reservoir("exh_plenum_1", 95.0, &gas_exhaust)
18 .add_reservoir("exh_plenum_2", 158.0, &gas_exhaust)
19 .add_orifice("int_plenum -> amb 1", 9.5, 0.92, vec!["ambient", "int_plenum"])
20 .add_orifice("int_plenum -> amb 2", 9.5, 0.92, vec!["ambient", "int_plenum"])
21 .add_orifice("int_plenum -> int_port", 6.5, 0.78, vec!["int_plenum", "int_port"])
22 .add_orifice("exh_plenum_2 -> amb", 8.9, 0.78, vec!["exh_plenum_2", "ambient"])
23 .add_orifice("exh_plenum_1 -> exh_plenum_2", 12.7, 0.78, vec!["exh_plenum_1", "exh_plenum_2"])
24 .add_orifice("exh_port -> exh_plenum_1", 10.8, 0.78, vec!["exh_port", "exh_plenum_1"])
25 .connect_from_to("valve_int", "int_port")
26 .connect_from_to("valve_exh", "exh_port");
27
28 let mut system = builder.build_system();
29
30 // Calculating
31 for speed in vec![5000.0, 5500.0, 6000.0, 6500.0, 7000.0, 7500.0, 8000.0, 8500.0, 9000.0] {
32 system.engine_mut().unwrap().set_speed(speed);
33 system.advance_to_steady_state();
34
35 // Writting data
36 let folder_name = format!("./Ryobi_26_results/{:.0}_", speed);
37 system.write_to_file( &(folder_name.clone() + "cylinder.txt"), "cyl_1", None);
38 system.write_to_file(&(folder_name.clone() + "int_plenum.txt"), "int_plenum", None);
39 system.write_to_file(&(folder_name.clone() + "int_port.txt"), "int_port", None);
40 system.write_to_file(&(folder_name.clone() + "exh_port.txt"), "exh_port", None);
41 system.write_to_file(&(folder_name.clone() + "exh_plenum_1.txt"), "exh_plenum_1", None);
42 system.write_to_file(&(folder_name.clone() + "exh_plenum_2.txt"), "exh_plenum_2", None);
43 system.write_to_file(&(folder_name.clone() + "int_valve.txt"), "valve_int", None);
44 system.write_to_file(&(folder_name.clone() + "exh_valve.txt"), "valve_exh", None);
45 }
46
47 system.engine().unwrap().write_performance_to("./Ryobi_26_results/engine_performance.txt");
48
49}
Sourcepub fn engine_mut<'a>(&'a mut self) -> Option<&'a mut Engine>
pub fn engine_mut<'a>(&'a mut self) -> Option<&'a mut Engine>
Examples found in repository?
examples/Ryobi_26_engine.rs (line 32)
4fn main() {
5
6 let gas = Gas::new("air.json");
7 let gas_intake = Gas::new("air.json");
8 let mut gas_exhaust = Gas::new("air.json");
9 gas_exhaust.TPX(500.0, 101325.0, "N2:0.662586, H2O:0.202449, CO2:0.134965");
10
11 let mut builder = lmb::SystemBuilder::new();
12 builder.add_engine("engine_Ryobi.json", &gas)
13 .add_environment("ambient", &gas)
14 .add_reservoir("int_plenum", 250.0, &gas_intake)
15 .add_reservoir("int_port", 2.04, &gas_intake)
16 .add_reservoir("exh_port", 2.04, &gas_exhaust)
17 .add_reservoir("exh_plenum_1", 95.0, &gas_exhaust)
18 .add_reservoir("exh_plenum_2", 158.0, &gas_exhaust)
19 .add_orifice("int_plenum -> amb 1", 9.5, 0.92, vec!["ambient", "int_plenum"])
20 .add_orifice("int_plenum -> amb 2", 9.5, 0.92, vec!["ambient", "int_plenum"])
21 .add_orifice("int_plenum -> int_port", 6.5, 0.78, vec!["int_plenum", "int_port"])
22 .add_orifice("exh_plenum_2 -> amb", 8.9, 0.78, vec!["exh_plenum_2", "ambient"])
23 .add_orifice("exh_plenum_1 -> exh_plenum_2", 12.7, 0.78, vec!["exh_plenum_1", "exh_plenum_2"])
24 .add_orifice("exh_port -> exh_plenum_1", 10.8, 0.78, vec!["exh_port", "exh_plenum_1"])
25 .connect_from_to("valve_int", "int_port")
26 .connect_from_to("valve_exh", "exh_port");
27
28 let mut system = builder.build_system();
29
30 // Calculating
31 for speed in vec![5000.0, 5500.0, 6000.0, 6500.0, 7000.0, 7500.0, 8000.0, 8500.0, 9000.0] {
32 system.engine_mut().unwrap().set_speed(speed);
33 system.advance_to_steady_state();
34
35 // Writting data
36 let folder_name = format!("./Ryobi_26_results/{:.0}_", speed);
37 system.write_to_file( &(folder_name.clone() + "cylinder.txt"), "cyl_1", None);
38 system.write_to_file(&(folder_name.clone() + "int_plenum.txt"), "int_plenum", None);
39 system.write_to_file(&(folder_name.clone() + "int_port.txt"), "int_port", None);
40 system.write_to_file(&(folder_name.clone() + "exh_port.txt"), "exh_port", None);
41 system.write_to_file(&(folder_name.clone() + "exh_plenum_1.txt"), "exh_plenum_1", None);
42 system.write_to_file(&(folder_name.clone() + "exh_plenum_2.txt"), "exh_plenum_2", None);
43 system.write_to_file(&(folder_name.clone() + "int_valve.txt"), "valve_int", None);
44 system.write_to_file(&(folder_name.clone() + "exh_valve.txt"), "valve_exh", None);
45 }
46
47 system.engine().unwrap().write_performance_to("./Ryobi_26_results/engine_performance.txt");
48
49}
pub fn _store_composition_of(&mut self, _obj_name: &str)
Auto Trait Implementations§
impl Freeze for System
impl !RefUnwindSafe for System
impl !Send for System
impl !Sync for System
impl Unpin for System
impl !UnwindSafe for System
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more