| 39 | { |
| 40 | |
| 41 | SolutionArray::SolutionArray(const shared_ptr<Solution>& sol, |
| 42 | int size, const AnyMap& meta) |
| 43 | : m_sol(sol) |
| 44 | , m_size(size) |
| 45 | , m_dataSize(size) |
| 46 | , m_meta(meta) |
| 47 | { |
| 48 | if (!m_sol || !m_sol->thermo()) { |
| 49 | throw CanteraError("SolutionArray::SolutionArray", |
| 50 | "Unable to create SolutionArray from invalid Solution object."); |
| 51 | } |
| 52 | m_stride = m_sol->thermo()->stateSize(); |
| 53 | m_sol->thermo()->addSpeciesLock(); |
| 54 | m_data = make_shared<vector<double>>(m_dataSize * m_stride, 0.); |
| 55 | m_extra = make_shared<map<string, AnyValue>>(); |
| 56 | m_order = make_shared<map<int, string>>(); |
| 57 | for (size_t i = 0; i < m_dataSize; ++i) { |
| 58 | m_active.push_back(static_cast<int>(i)); |
| 59 | } |
| 60 | reset(); |
| 61 | m_apiShape.resize(1); |
| 62 | m_apiShape[0] = static_cast<long>(m_dataSize); |
| 63 | } |
| 64 | |
| 65 | SolutionArray::SolutionArray(const SolutionArray& other, |
| 66 | const vector<int>& selected) |