1010#include " nlohmann/json.hpp"
1111#include " gimmicks.hpp"
1212#include " pmc_resource.hpp"
13+ #include " gas_data.hpp"
1314
1415extern " C" void f_gas_state_ctor (void *ptr) noexcept ;
1516extern " C" void f_gas_state_dtor (void *ptr) noexcept ;
@@ -18,6 +19,7 @@ extern "C" void f_gas_state_get_item(const void *ptr, const int *idx, double *va
1819extern " C" void f_gas_state_len (const void *ptr, int *len) noexcept ;
1920extern " C" void f_gas_state_to_json (const void *ptr) noexcept ;
2021extern " C" void f_gas_state_from_json (const void *ptr) noexcept ;
22+ extern " C" void f_gas_state_set_size (const void *ptr, const void *gasdata_ptr) noexcept ;
2123
2224struct GasState {
2325 PMCResource ptr;
@@ -63,4 +65,27 @@ struct GasState {
6365 f_gas_state_len (&self.ptr , &len);
6466 return len;
6567 }
68+
69+ static double mix_rat (const GasState &self, const GasData &gasData,
70+ const std::string &name) {
71+ int value;
72+ const int name_size = name.size ();
73+
74+ f_gas_data_spec_by_name (&gasData.ptr , &value, name.c_str (), &name_size);
75+ if (value==0 ) throw std::runtime_error (" Element not found." );
76+ return get_item (self, value-1 );
77+ }
78+
79+ static void set_size (GasState &self, const GasData &GasData) {
80+ f_gas_state_set_size (&self.ptr , &GasData.ptr );
81+ }
82+
83+ static std::valarray<double > mix_rats (const GasState &self) {
84+ int len;
85+ f_gas_state_len (&self.ptr , &len);
86+ std::valarray<double > data (len);
87+
88+
89+ return data;
90+ }
6691};
0 commit comments